gpt4 book ai didi

java - ZK onKeyUp 与正则表达式

转载 作者:行者123 更新时间:2023-11-30 04:55:58 25 4
gpt4 key购买 nike

我试图让 zk 文本框的行为就像只有数字值一样。对于这个上面的代码效果很好

<textbox id="telNo" xmlns:w="client" >
<attribute w:name="doKeyPress_">
function(evt){
if (!this._shallIgnore(evt, "0123456789"))
this.$doKeyPress_(evt);
}
</attribute>

但我还需要检查第一个值是否以 0 或 5 或 .. 开头。为此,我尝试制作正则表达式,但没有成功。我的正则表达式 ^5[0-9]{8} 如何在我的函数中实现此正则表达式检查?

最佳答案

我认为这不是正则表达式的问题,你可以看看InputWidget,它实现了shallIgnore。

https://github.com/zkoss/zk/blob/master/zul/src/archive/web/js/zul/inp/InputWidget.js

_shallIgnore: function (evt, keys) {
var code = (zk.ie||zk.opera) ? evt.keyCode : evt.charCode;
if (!evt.altKey && !evt.ctrlKey && _keyIgnorable(code)
&& keys.indexOf(String.fromCharCode(code)) < 0) {
evt.stop();
return true;
}
},

你会发现它只检测一个字符。

由于它与整个单词不匹配,(它的性能很差并且在一般情况下没有用)因此,在您的情况下,还有不使用正则表达式的替代方法。

<textbox id="telNo" xmlns:w="client" >
<attribute w:name="doKeyPress_">
function(evt){
if(this.getValue().length > 0 ){
if (!this._shallIgnore(evt, "0123456789"))
this.$doKeyPress_(evt);
}else{
if (!this._shallIgnore(evt, "05"))
this.$doKeyPress_(evt);
}
}
</attribute>
</textbox>

您可以在 ZK Fiddle 平台上测试代码。

http://zkfiddle.org/sample/1b3nlr0/1-Textbox-input-restriction-sample

如果您确实想使用正则表达式作为输入掩码,这并非不可能,您可以执行以下步骤。

1.获取旧值

2.尝试将新字符添加到值中(必须像shallIgnore那样忽略某些特殊键代码的大小写)

3.使用全文进行正则表达式,如果不匹配,则停止事件并在onKeyPress中返回false。

但在您的用例中,我认为示例已经足够好了。

<小时/>

您还有另一种选择,对于使用 jquery mask 插件,ZK 可以与大多数 jQuery 插件配合良好。

http://www.meiocodigo.com/projects/meiomask/

关于java - ZK onKeyUp 与正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8540832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com