Javascript Firefox上的正则表达式问题
我试图使用正则表达式只允许输入字段中的字母“-”和退格。我需要能够使用左右箭头键和删除键。我试图用以下方法来实现这一点:Javascript Firefox上的正则表达式问题,javascript,jquery,regex,firefox,web,Javascript,Jquery,Regex,Firefox,Web,我试图使用正则表达式只允许输入字段中的字母“-”和退格。我需要能够使用左右箭头键和删除键。我试图用以下方法来实现这一点: $("#input").keypress(function (e) { var regex = new RegExp("^[a-zA-Z-\b]+$"); var key = String.fromCharCode(!e.charCode ? e.which : e.charCode); if((!(e.keyCode == 37 || e.keyCode
$("#input").keypress(function (e) {
var regex = new RegExp("^[a-zA-Z-\b]+$");
var key = String.fromCharCode(!e.charCode ? e.which : e.charCode);
if((!(e.keyCode == 37 || e.keyCode == 39 || e.keyCode == 46))){
if(!regex.test(key)){
return false;
}
}
});
我将检查该键是否不是左箭头(37)、右箭头(39)或删除键(46),然后检查该键是否不在正则表达式中
这适用于IE和Chrome,但在Firefox上,键代码37和39也分别对应于“和%
关键代码适用于所有浏览器,问题是[仅在firefox上]如果我允许使用箭头和删除键,那么它也允许使用“和%”字符。我实际上能够解决这个问题。对于IE和Chrome,键码和哪些值相同。在Firefox上,左箭头的keyCode值为37,但该值为0 我通过以下方式解决了这个问题:
$("#input").keypress(function (e) {
var regex = new RegExp("^[a-zA-Z-\b]+$");
var key = String.fromCharCode(!e.charCode ? e.which : e.charCode);
if(!((e.keyCode == 37 && e.which == 0) || (e.keyCode == 39 && e.which == 0) || (e.keyCode == 46 && e.which == 0))){
if(!regex.test(key)){
return false;
}
}
});
keyCode是一个数字,不知道为什么要把它们作为字符串。可能是我查过的答案的重复。这并不是因为键码在Firefox上不起作用,而是它们允许使用箭头键/删除键以及“和%”字符。我只需要箭头键/删除键就可以了。