原型.将输入限制为数字

Prototype. Restrict input to numbers

本文关键字:数字 输入 原型      更新时间:2023-09-26

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

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

JS垃圾桶上的示例。

您正在使用原型JS,据我所知,它不允许使用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(event)

您可以通过在 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);
    }
  });
});