jquery - 如何让 Firefox 理解箭头键和 % 和 ' 之间的区别

标签 jquery regex firefox keycode

我有一个价格字段,我只想接受数字(我不喜欢默认的 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 中接受 %!我还发现了一个简单的正则表达式代码也有同样的问题。我怎样才能让 Firefox 理解?!

最佳答案

实际上%左箭头键keyCode并不相同。

  • %
    • .charCode == 37
    • .keyCode == 0
    • .which == 37
  • 向左箭头
    • .charCode == 0
    • .keyCode == 37
    • .which == 0

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

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

关于jquery - 如何让 Firefox 理解箭头键和 % 和 ' 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19510645/

相关文章:

jquery - 根据另一个元素的放置更改元素属性 - jQuery

c++ - C++ 中的正则表达式

css - 在 SVG 中重新创建 Chrome 的仿斜体

JQuery IE 生涩幻灯片动画

javascript - 如何使用 jquery 或 javascript 获取单选按钮 Id 值

javascript - 使用我的下拉元素进行选择有什么问题

java - 在java正则表达式中转义特殊字符(不引用)

javascript - 使用正则表达式评估电子邮件地址时出现性能问题

java - 当页面第一次加载时,webdriver需要很长时间才能找到第一个元素。

css - firefox/ie/chrome/Safari 之间的.css 问题