java - ZK onKeyUp 与正则表达式

标签 java regex zk onkeyup

我试图让 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/

相关文章:

php - 修改脚本中的正则表达式,通过向它们添加跨度类来突出显示文本中的某些单词

java - zk框架内存网格

java - ZK Listbox 中的纯 Java 绑定(bind)与 itemRenderer

java - zk中Messagebox.show()如何实现双语?

java - Maven项目中src/main/java和src/test/java的区别

java - Firebase 填充 recyclerview 错误 : com. firebase.client.FirebaseException: Failed to bounce to type

java - 禁用webclient ssl验证springboot 2.0.4

jquery - 替换类中字符串中的文本+通配符数字

java - 在kafka中创建多少生产者?

C++ 正则表达式不匹配空格