[英]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);
}
});
});
您可以通过测试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.