Jquery 如何让Firefox理解箭头键与%和';

Jquery 如何让Firefox理解箭头键与%和';,jquery,regex,firefox,keycode,Jquery,Regex,Firefox,Keycode,我有一个价格字段,我只想接受数字(我不喜欢默认的html5输入,比如输入[number]等等),所以我写了以下内容: <input type="text" name="price" placeholder="" onkeypress="validate(event)"> function validate(evt) { var theEvent = evt || window.event; var key = theEvent.keyCode || theEvent

我有一个价格字段,我只想接受数字(我不喜欢默认的html5输入,比如输入[number]等等),所以我写了以下内容:

<input type="text" name="price" placeholder="" onkeypress="validate(event)">

function validate(evt) {
    var theEvent = evt || window.event;
    var key = theEvent.keyCode || theEvent.which;
    key = String.fromCharCode( key );
    var code = theEvent.keyCode || theEvent.which;
    var regex = /[0-9]/;
        if( !regex.test(key) && code != 8/*backspace*/ && code != 37/*left*/ && code != 39/*right*/ && code != 13/*enter*/ && code != 46/*delet*/ && code != 9/*tab*/){
        theEvent.returnValue = false;
        if(theEvent.preventDefault) theEvent.preventDefault();
        };
};

功能验证(evt){
var theEvent=evt | | window.event;
var key=theEvent.keyCode | | theEvent.which;
key=String.fromCharCode(key);
var代码=theEvent.keyCode | | theEvent.which;
var regex=/[0-9]/;
如果(!regex.test(key)&&code!=8/*退格*/&code!=37/*左*/&code!=39/*右*/&code!=13/*输入*/&code!=46/*删除*/&code!=9/*制表符*/){
theEvent.returnValue=false;
如果(theEvent.preventDefault)theEvent.preventDefault();
};
};

如您所见,添加了一些字符,如左箭头键和右箭头键、制表符等,以便更好地导航。它在铬合金中工作完美。在Firefox中,一些字符是无意中添加的。例如,左箭头键和%的键代码相同!所以现在我的价格域在Firefox中接受%!我还发现了一个简单的regexp代码,有同样的问题。我怎样才能让Firefox理解

实际上,
%
键和
左箭头键
不一样

  • %
    • .charCode==37
    • .keyCode==0
    • 。其中==37
  • 左箭头
    • .charCode==0
    • .keyCode==37
    • 。其中==0
您需要修复程序逻辑,而不是通过
…=theEvent.keyCode | | theEvent.which


(原始)在浏览器开始正确、完整地执行之前,键盘处理总是一团糟。

实际上
%
键和
左箭头键
是不同的

  • %
    • .charCode==37
    • .keyCode==0
    • 。其中==37
  • 左箭头
    • .charCode==0
    • .keyCode==37
    • 。其中==0
您需要修复程序逻辑,而不是通过
…=theEvent.keyCode | | theEvent.which


(原始)在浏览器开始正确、完整地实现之前,键盘处理一直都是一团糟。

我不知道有什么区别!TnxI不知道有什么区别!Tnx