这是我正在使用的代码:
$('input').keypress(function(e){
illkey = ['40', '41', '123', '125', '91', '93'];
ech = e.charCode;
if ($.inArray(ech, illkey) > -1){
tps = this.value + String.fromCharCode(e.which);
alert(tps+' is not allowed!');
e.preventDefault();
}
});
我试图阻止用户在文本或密码输入中输入某些特定字符,并在他们这样做时提醒他们。 上面代码的问题是它什么也没做,也没有给我任何错误。我错过了什么?
答案 0 :(得分:1)
您的代码无效,因为您正在将字符串与整数进行比较。你的keycode是一个整数,你的数组充满了字符串。改变m:
中的任何一个illkey = [40, 41, 123, 125, 91, 93];
或
if ($.inArray(ech.toString(), illkey) > -1) {
...
答案 1 :(得分:1)
值之间的比较是严格的。
严格意味着比较使用===
而不是==
,3个等号不会转换类型,因此===
用来比较40
是不等于到'40'
。
问题是您的数组包含字符串(类型string
),而e.chatCode
类型为number
,您应该替换:
ech = e.charCode; // This line to...
ech = e.charCode.toString(); // This line.
或者你可以替换:
illkey = ['40', '41', '123', '125', '91', '93'];// This line to...
illkey = [40, 41, 123, 125, 91, 93]; // This line where value types are `number`
答案 2 :(得分:0)
$('input').keypress(function(e){
illkey = [40, 41, 123, 125, 91,93];
ech = e.keyCode;
console.log($.inArray(ech, illkey));
if ($.inArray(ech, illkey) > -1){
tps = this.value + String.fromCharCode(e.which);
alert(tps+' is not allowed!');
return false;
}
});
你应该使用数组,因为它的数字不是字符串