-2

こんにちは、JavaScriptを使用してフィールドを検証しています

私は特殊文字をチェックしています..私が実装しているコードは、_アンダースコアを除くすべての特殊文字を検証します..

   <script type="text/javascript" language="javascript">
function validateForm()
{
    var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?_";

   for (var i = 0; i < document.reg_form.txtusername.value.length; i++) 
        {
            if (iChars.indexOf(document.reg_form.txtusername.value.charAt(i)) != -1) 
                {
                    alert ("Special Characters are not allowed.");
                    return false;
                        }
         }
    return true;
}
</script>

このフィールドの

<input name="txtusername" type="text" id="txtusername" maxlength="10" style="background-color:#CCC"  />

しかし、アンダースコアを検証していません

4

3 に答える 3

2

明らかに「ブラックリスト」である iChars 変数にそれを押し込むだけでは意味がありませんか?

var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?_";
于 2012-04-12T15:09:06.233 に答える
1
var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?_";

        for (var i = 0; i < document.reg_form.firstname.value.length; i++) 
        {
            if (iChars.indexOf(document.reg_form.firstname.value.charAt(i)) != -1) 
                {
                    alert ("Special Characters are not allowed");
                    return false;
                 }
         }
于 2012-04-12T15:10:45.640 に答える
0

文字列内の文字は、文字列が配列であるかのようにアドレス指定できます (考えてみれば、そうです)。文字列 char-per-char を繰り返しループしているので、配列の場合と同様に、ロジックに一貫性を持たせてみませんか?

if (iChars.indexOf(document.reg_form.firstname.value[i]) !== -1)
{
    alert('Foobar');
    return false;
}

それはうまくいくはずです...また、iChar文字列は二重引用符で区切られているため、単一引用符をエスケープする必要はありません...他のすべてが失敗した場合は、そのバックスラッシュも省略してみてください. それが問題の原因だとは思いませんが、

それは働いています:ここ

于 2012-04-12T15:30:53.077 に答える