如何让Firefox了解箭头键与%和'之间的区别

时间:2013-10-22 06:34:01

标签: jquery regex firefox keycode

我有一个价格区域,我想接受只是数字(我不喜欢输入[数字]等默认的html5输入。)所以我写了这个:

<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();
        };
};

当你看到一些字符如左右箭头键,标签等被添加以便更好地导航。它在Chrome中运行完美。在Firefox中,无意中添加了一些字符。例如,左箭头键和%的键代码是相同的!所以现在我的价格字段在Firefox中接受%!我还发现了一个简单的正则表达式代码,同样的问题。如何让Firefox了解?!

1 个答案:

答案 0 :(得分:4)

实际上keyCode%的{​​{1}}不一样。

  • left arrow key
    • %
    • .charCode == 37
    • .keyCode == 0
  • .which == 37
    • left arrow
    • .charCode == 0
    • .keyCode == 37

您需要通过.which == 0修复您的程序逻辑而不是密码。

(原始)无论如何,键盘处理都是一团糟,直到浏览器开始正确且完整地实现.key and .char