2011-07-04 8 views
1

[送信]ボタンをクリックするとJavaScriptで検証されるテキストボックスがあります。ユーザー入力にJavaScriptの禁止文字が含まれているかどうかの検出

文字0-9とa-fおよびA-Fのみが許可されます。

g-zとG-Zだけでなく、句読点などの他の文字も許可されていません。

私がこれまで持っているコードは次のとおりです。動作していないよう

function validate_form () 
{ 
    valid = true; 

    if (document.form.input.value == [a-zA-Z_,.:\|]) 
    { 
     alert ("You can only enter either 0-9 or A-F. Please try again."); 
     valid = false; 
    } 

    return valid; 
} 

私はJavaScriptを初めて使っているので、どこに間違っているのかのヒントを教えてください。

+2

'document.formような何かを行うことができます。 input.value == [a-zA-Z _、:\ |] 'は有効なJS構文ではありません。正規表現について:https://developer.mozilla.org/ja/JavaScript/Guide/Regular_Expressions –

+0

悪いキャラクターごとに警告を表示することは非常に面倒です。代わりにエラーメッセージを表示してdivや何かを再表示してください。 –

答えて

3

このコードを実際に多く整理できます。 validを追跡する必要はありません。test()は、私たちが探しているtrueまたはfalseの価値を提供します。ブラックリストではなく、許容可能な文字のホワイトリストを保管することも、あなたのケースでは簡単です。つまり、はすべての文字ですが、すべての文字を指定することはできません。となりません。

function validate_form() { 
    return /^[a-fA-F0-9]+$/.test(document.form.input.value); 
} 

あなたはまた、事前チェックを行うためにこれを使用することができます注:

document.form.input.onkeyup = function() { 
    if (!validate_form()) { 
    alert("You can only enter either 0-9 or A-F. Please try again."); 
    } 
}; 
2

構文は/^[a-zA-Z_,.:\|]+$/.test(document.form.input.value)です。 ^$に注目してください。それがなければ、少なくとも1つの許可された文字しか持たない文字列に対してもテストは合格になります。

0

検証のための最良の方法は、ユーザーに間違った文字を入力させないことです。このコードを使用します(これはjQueryバージョンですが、JavaScriptにも簡単に変換できます)。

$('#inputFiledId').keyup(function(e){ 
    // checking the e.keyCode here, if it's not acceptable, the return false (which prevents the character from being entered into the input box), otherwise do nothing here. 
}); 

これは事前チェックと呼ばれます。クライアント側で何をしているのかを考えてみてください。サーバ側の値もチェックしてください(サーバ側での検証が必要です)。form-spoofingのように複数のハッキングがあるので注意してください。

0

あなたはこの

$('input').keyup(function(){ 
    var charac = /[g-zG-Z;:,.|_]/; 
    var result = charac.test($(this).val()); 
    if(result == true){ 
     alert('You can only enter either 0-9 or A-F. Please try again.'); 
    } 
}) 

http://jsfiddle.net/jasongennaro/GTQPv/1/

関連する問題