我有一个价格字段,我只想接受数字(我不喜欢默认的 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/