Javascript中的简单数字输入验证(Firefox错误)

Javascript中的简单数字输入验证(Firefox错误),javascript,google-chrome,firefox,numbers,Javascript,Google Chrome,Firefox,Numbers,在Chrome上运行良好,但在Firefox中我无法按delete或backspace键编辑数字。我的脚本中的问题在哪里?当然,我可以用另一种方法来实现这一点,但我想知道Firefox在执行上述脚本时会出现什么错误 function onlyNumberInput(evt) { var theEvent = evt || window.event; var key = theEvent.keyCode || theEvent.which; key = String.fromCharCod

在Chrome上运行良好,但在Firefox中我无法按delete或backspace键编辑数字。我的脚本中的问题在哪里?当然,我可以用另一种方法来实现这一点,但我想知道Firefox在执行上述脚本时会出现什么错误

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();
  }
}
你错过了“
{

JavaScript是区分大小写的。记住这一点。
希望有帮助。祝你好运。

你好@Raju Ahmed我检查了你的代码,发现你正在用
regex
测试密钥,但问题是它只检查数字,这是你要问的。但是你还需要检查删除密钥(46),还需要检查退格(8)和其他你想要使用的密钥

另外,我在Chrome build 55.0.2883.87 m(64位)上测试了您的代码,它也不适用于删除、退格和其他

如果您使用jQuery,您可能希望这样使用:

if(theEvent.preventDefault){
  theEvent.preventDefault();
}
如果要使用其他密钥,请找到密钥对密钥进行编码并添加到“允许”。 如果您的代码中没有使用JQuery,请告诉我。我可以将其更改为正常版本:)

如果您只有一行作业,那么在JS中还可以使用以下内容:

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();
            }
        }
    }
编辑II:

嗯@Raju,我再次检查了代码,它没有按照你的意愿工作。因此,如果你想使用它,我找到了一个带有插件的例子

插件:数字输入

演示:


您可以查看有关仅数字输入的链接:

Javascript确实区分大小写,但如果(theEvent.preventDefault)theEvent.preventDefault()也允许此
在if条件下,你不必在单行代码中使用breack,我想这不是问题……虽然我只是尝试了用大括号。但记住Chrome正在工作。在Firefox中,按backspace/del键也在调用我的函数,并且拒绝对这些键执行任何正常的操作,但在Chrome中,按t键时它没有调用我的函数这些键和数字键调用我的函数,效果很好。谢谢你的努力。使用相同的版本和jQuery。你的脚本在Firefox中用于删除/退格,但现在无法识别两种浏览器的数字。许多国家的人都会使用我的应用程序。所以它应该适用于任何版本的浏览器。
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();
            }
        }
    }
if(theEvent.preventDefault) 
    theEvent.preventDefault();