我的要求是只允许使用字母字符-
,'
但是,以下代码允许用户输入%
。
$('.regx').on("keypress", function (event) {
var englishAlphabet = /[a-zA-Z-']/g;
var key = String.fromCharCode(event.which);
if (event.keyCode == 8 || event.keyCode == 37 || event.keyCode == 39 || englishAlphabet.test(key)) {
return true;
}
return false;
});
请帮我解决这个问题!
答案 0 :(得分:1)
删除event.keyCode == 37
(这是%
字符。)
此外:
-
是event.keyCode == 45
'
是event.keyCode == 39
所以...总之,你会留下来:
$('.regx').on("keypress", function (event) {
var englishAlphabet = /[a-zA-Z-']/g;
var key = String.fromCharCode(event.which);
if (event.keyCode == 39 || event.keyCode == 45 || englishAlphabet.test(key)) {
return true;
}
return false;
});
答案 1 :(得分:0)
添加此
if ((event.KeyCode == 53 || event.KeyCode == 101) && event.shiftKey) {
return false;
}
event.shiftKey
检查shift
键是否已按下
event.KeyCode == 53
检查5
已被按下
event.KeyCode == 101
检查numpad 5
两者的组合使%
并将活动更改为keydown
% and left arrow
的密钥代码为37
OP发表评论后更新
222
'
189
-
$('.regx').on("keydown", function (event) {
var englishAlphabet = /[a-zA-Z-']/g;
var key = String.fromCharCode(event.which);
var KeyCode = event.KeyCode || event.which;
console.log(KeyCode);
if ([222, 53, 101, 189].indexOf(KeyCode) > -1 && event.shiftKey) { //add here
return false;
}
if ([8, 37, 222, 189].indexOf(KeyCode) > -1 || englishAlphabet.test(key)) {
return true;
}
return false;
});