我试图使用正则表达式只允许字母,' - '和输入字段的退格键。我需要能够使用左右箭头键和删除键。我试图这样做:
$("#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]如果我允许使用箭头和删除密钥,它也允许使用'和%字符。
答案 0 :(得分:0)
我实际上能够弄明白。对于IE和Chrome,keyCode和哪些值是相同的。在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;
}
}
});