2

次のような文字の配列があります。

var invalid_chars = ['<', '>', '$', '@', '&', '+', '(', ')', '[', ']', '{', '}',' ','`'];

次のような文字列があります。

var id_val = $("#id_number").val(); //text field contains "mu 1$2@345"

そのため、フィールドに入力するinvalid_charsを制限したいと思います。

そのために、次のコードがあります。

var id_val = $("#id_number").val();
var invalid_chars = ['<', '>', '$', '@', '&', '+', '(', ')', '[', ']', '{', '}',' ','`'];
if (in_array(invalid_chars,id_val)) {
  console.info("HI");
}

しかし、エラーが表示されます。「ReferenceError: in_array is not defined」

私を助けてください。前もって感謝します。

4

5 に答える 5

3

in_array()PHPメソッドです。JavaScriptでは。を使用しますindexOf()

于 2012-12-14T14:42:04.333 に答える
1

$ .inArray()ユーティリティメソッドを持つjQueryをすでに使用しているようです。

于 2012-12-14T14:44:30.110 に答える
1

私の意見では、文字のリストを正規表現に変換する必要があります。

var badchars = /[<>$@&+()[\]{},` ]/;
if (badchars.test(id_val)) {
  // contains invalid characters
}
于 2012-12-14T14:48:09.040 に答える
1

in_array関数、簡単な例を書く必要があります:

function in_array( arr, val ) {
    for( var i = 0; i < arr.length; i++) {
        if( arr[ i ] == val ) {
            return true;
        }
    }
}

または正規表現を使用する:

if( id_val.search( /[^0-9]/g ) == -1 )

または、正規表現を使用して、数字以外のすべての文字を削除できます。

var id_val = $("#id_number").val(); //text field contains "mu 1$2@345"
id_val = id_val.replace( /[^0-9]/g, '' );
console.log( id_val ); //text now field contains "12345"

または、ラテン文字も許可したい場合:

[^0-9A-Za-z]

^ これにはスペース文字も含まれません。

于 2012-12-14T14:42:52.510 に答える
0

配列で使用できますindexOfが、古いバージョンの MSIE の jScript エンジンは、このメソッドをネイティブにサポートしていません。したがって、Array.prototypeこれらのブラウザの を拡張するか (明らかにリスクがないわけではありません)、テストしたい文字列を単純に使用します。

var nonoChars = '<>$@&+()[]{},`';
for(var i = 0; i< id_val.length; i++)
{
    if (nonoChars.indexOf(id_val.charAt(i)) > -1)
    {
        alert('Char #' + (i + 1) + ' is not allowed!');
        return false;
    }
}
//input ok

ただし、この場合、正規表現の方が単純に理にかなっています。

if (id_val.match(/[<>$@&+()\[\]{},`]/))
{
    alert('Invalid input');
    return false;
}
//input ok
于 2012-12-14T15:16:21.650 に答える