Jquery使用inarray阻止特定字符

时间:2015-06-06 09:38:23

标签: jquery

这是我正在使用的代码:

$('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();
    }
});

我试图阻止用户在文本或密码输入中输入某些特定字符,并在他们这样做时提醒他们。 上面代码的问题是它什么也没做,也没有给我任何错误。我错过了什么?

3 个答案:

答案 0 :(得分:1)

您的代码无效,因为您正在将字符串与整数进行比较。你的keycode是一个整数,你的数组充满了字符串。改变m:

中的任何一个
illkey = [40, 41, 123, 125, 91, 93];

Fiddle

if ($.inArray(ech.toString(), illkey) > -1) {
...

Fiddle

答案 1 :(得分:1)

取自(JQuery manual # inArray):

  

值之间的比较是严格的。

严格意味着比较使用===而不是==,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;
    }
});

你应该使用数组,因为它的数字不是字符串

fiddle