function onlyNumberInput(evt) {
var theEvent = evt || window.event;
var key = theEvent.keyCode || theEvent.which;
key = String.fromCharCode( key );
var regex = /[0-9]/;
if( !regex.test(key) ) {
theEvent.returnValue = false;
if(theEvent.preventDefault) theEvent.preventDefault();
}
}
在Chrome上运行正常但在Firefox中我无法按删除或退格键来编辑号码。我的脚本中的问题在哪里?当然我可以用另一种方式来做这个但我想知道Firefox在上面的脚本上执行会发生什么错误?
答案 0 :(得分:0)
if(theEvent.preventDefault) theEvent.preventDefault();
你错过了" {
"
if(theEvent.preventDefault){
theEvent.preventDefault();
}
JavaScript是CaseSensitive。记住这一点。 希望它有所帮助。祝你好运。
答案 1 :(得分:0)
您好@Raju Ahmed我检查您的代码并确定您正在使用regex
测试密钥,但问题是它只检查数字,这就是您的意思问。但是你也需要检查Delete Key(这是46)并检查Backspace(8)和其他你想要使用的键。
此外,我在Chrome版本55.0.2883.87 m(64位)上测试您的代码,它也不适用于删除,退格等。
如果你使用jQuery,你可能想要这样使用:
function onlyNumberInput(evt) {
var theEvent = evt || window.event;
var allowed = [8, 17, 46, 37, 38, 39, 40];
var key = theEvent.keyCode || theEvent.which;
var regex = /[0-9]/;
if($.inArray(allowed, key) !== -1) {
key = String.fromCharCode( key );
if( !regex.test(key) ) {
theEvent.returnValue = false;
if(theEvent.preventDefault)
theEvent.preventDefault();
}
}
}
如果要使用其他密钥,请找到keyCode密钥并添加到允许的密钥中。 如果您不在代码中使用JQuery,请告诉我。我可以将它改为普通版:)
如果只有一个行作业,可以在JS中使用另一件事:
if(theEvent.preventDefault)
theEvent.preventDefault();
编辑II:
那么@Raju我再次检查代码它没有按你的意愿工作。所以如果你想使用它,我会用插件找到一个关于它的例子。
插件:NumericInput,
演示:Demo
您可以查看此链接,了解仅限数字输入:HTML Text Input allow only Numeric input