我有多个输入,我将事件监听器附加到其中,该事件监听器监听按下的键,使用正则表达式对其进行测试,如果是数字则返回 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);
}
});
});
关于javascript - 原型(prototype)。限制输入数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27443666/