繁体   English   中英

原型。 将输入限制为数字

[英]Prototype. Restrict input to numbers

我有多个输入要附加到事件侦听器,该侦听器侦听按下的键,使用正则表达式对其进行测试,如果数字则返回true,如果其他字符则返回false。 问题是即使我的测试函数返回false,输入也接受字母。

$$(".number").each(function (element) {
  return $(element).observe("keypress", function (event) {
    return /[\d\s]/.test(String.fromCharCode(event.keyCode));
  });
});

JS Bin上的示例。

您正在使用prototypeJS,据我所知,它不允许使用return false来取消事件传播和默认行为(如jQuery一样)。 虽然它具有Event.stop(event)方法

$$(".number").each(function (element) {
    return $(element).observe("keypress", function (event) {
        var result = /[\d\s]/.test(String.fromCharCode(event.keyCode));

        if (!result) {
            Event.stop(event);
        }
    });
});

Event.stop(事件)

您可以通过测试keyup上的值来完成此操作,然后如果输入的内容与所需的模式不匹配,则将其删除:

$$(".number").each(function (element) {
  return $(element).observe("keyup", function (event) {
    var val = this.value

    if(!/[\d\s]/.test(String.fromCharCode(event.keyCode))){
      this.value = val.substring(0, val.length - 1);
    }
  });
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM