30

重複の可能性:
ユーザーが入力フィールドに無効な文字を入力しないようにする方法

1ページに3つのテキストボックスがあります。それらの1つは数字、他のアルファベット、および3番目は数字またはアルファベットのいずれかを許可する必要があります。

これが唯一の要件であるため、検証プラグインやその他のサードパーティプラグインは使用したくありません。純粋なjQueryを使用して独自のプラグインを作成することでこれを行うにはどうすればよいですか?

これは私がやったことですが、コードが長くなりすぎるような気がします

 $(this).keydown(function(e)
        {
            var key = e.charCode || e.keyCode || 0;            
            return (
                key == 8 || 
                key == 9 ||
                key == 46 ||
                (key >= 37 && key <= 40) ||
                (key >= 48 && key <= 57) ||
                (key >= 96 && key <= 105));
        });

http://jsfiddle.net/Cvus8/

誰かがこの問題に取り組むための最良の方法を教えてもらえますか?

4

2 に答える 2

69

より良い解決策は、正規表現ベースのチェックを使用することです。以下の例では、id のフィールドで英数字のみを制限しますtext

$('#text').keypress(function (e) {
    var regex = new RegExp("^[a-zA-Z0-9]+$");
    var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
    if (regex.test(str)) {
        return true;
    }

    e.preventDefault();
    return false;
});
于 2012-11-05T17:14:32.390 に答える
13

1〜9の範囲の数字と、それに続く0個以上の他の数字:

^[1-9]\d*$

文字列に(ASCII)英数字、アンダースコア、スペースのみが含まれていることを確認します

^[\w ]+$

アルファベットのみスペースなしまたは_

^[a-zA-Z]+$

それらの文字のみを含む文字列(または空の文字列)を照合するには、

^[a-zA-Z0-9_]*$

役立つかもしれないいくつかのパターン..しかし、私はあなたがあなたの必要に応じてそれらを修正しなければならないと思います..私はそれが役立つことを願っています..

于 2012-11-05T17:10:20.087 に答える