【问题标题】:How to make Firefox understand the difference between arrow keys and % and '如何让 Firefox 理解箭头键和 % 和 ' 之间的区别
【发布时间】:2013-10-22 06:34:00
【问题描述】:

我有一个价格字段,我只想接受数字(我不喜欢默认的 html5 输入,如 input[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();
        };
};

如您所见,添加了一些字符,如左右箭头键、制表符等,以便更好地导航。它在 Chrome 中完美运行。在 Firefox 中,一些字符是无意添加的。例如左箭头键和%的键码是一样的!所以现在我的价格字段在 Firefox 中接受 % !我还发现了一个简单的正则表达式代码,同样的问题。怎样才能让火狐看懂?!

【问题讨论】:

    标签: jquery regex firefox keycode


    【解决方案1】:

    实际上%left arrow keykeyCodes是不一样的。

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

    您需要修复您的程序逻辑,而不是通过... = theEvent.keyCode || theEvent.which 将代码混在一起。

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

    【讨论】:

    • 我不知道有什么区别! Tnx
    猜你喜欢
    • 2019-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-14
    • 1970-01-01
    • 2016-01-25
    • 2013-10-19
    相关资源
    最近更新 更多