0

パスワードのフォームに検証機能を提供しています。いくつかの検証ルールを実装し、送信時にすべてチェックできるようにする必要があります。今、私にとってコードは健全ですが、疲れすぎて気付かないコードの論理エラーである可能性があると思います(コーヒーマシンも!)

JavaScript は次のとおりです。

<script type="text/javascript">
<!--
    function validate(registerForm)
    registerForm.onsubmit=function()
    {
        var pw1 = document.forms["register"]["password1"].value;
        var pw2 = document.forms["register"]["password2"].value;

        //Check values are present in both fields
        if(pw1 == '' || pw2 == '')
        {
            alert("Please enter your password twice.");
            return false;
        }
        //Check there no spaces
        else if(document.forms["register"]["password1"].value.indexOf(invalid) > - 1) 
        {
            alert("Spaces are not allowed in passwords!");
            return false;
        }
        //Check passwords are the same
        else
        {
            if(pw1 != pw2) 
            {
                alert("The passwords you entered were not the same. Please try again!");
                return false;
            }
            //Accept passwords
            {
                alert("Password accepted!");
                return true;
            }
        }
    }
-->
</script>

それに付随する HTML フォーム:

<form id="register">
    <label for="username">Username</label>
    <input type="text" class="input_text" name="username" id="name" placeholder="e.g. AberLibrary01" />
    <br />
    <label for="password">Password</label> 
    <input type="text" class="input_text" name="password1" id="password1" placeholder="e.g. aber01" />
    <br />
    <label for="re-enterpassword">Re-enter password</label>
    <input type="text" class="input_text" name="password2" id="password2" placeholder="e.g. aber01" />

    <input type="submit" class="button" value="Register" />
    </form>

    <script type="text/javascript">
    <!--
        new validate(document.forms['register']);
    -->
    </script>

素敵な StackOverflow コミュニティのアイデアはありますか? 正確な問題は、パスワードにスペースが含まれていないか、入力された 2 つのパスワードが同じかどうかをチェックしないことです。両方のパスワード フィールドに少なくとも何かがあることを正常にチェックします。

ありがとうダン

4

2 に答える 2

0

この行:

else if(document.forms["register"]["password1"].value.indexOf(invalid) > - 1) 

invalidは定義されておらず、これが直面している問題の原因になると思われます。

于 2012-07-03T15:08:18.563 に答える
0

コードに変更を加えて動作させましたhttp://jsbin.com/igonec/edit#preview

エラー

  1. var pw1 = document.forms["register"]["password1"] の使用。エラーを引き起こしていました
  2. 他に欠けています。
  3. " " の代わりに無効を使用。
  4. 括弧の使い方が間違っています。

エラーを省略し、ソリューションをよりエレガントにしました。

Javascript

    function validate()
     {
        var pw1 = document.getElementById("password1").value;
        var pw2 = document.getElementById("password2").value;

        //Check values are present in both fields
        if(pw1 ==='' || pw2 === '')
        {
            alert("Please enter your password twice.");
            return false;
        }
        //Check there no spaces
        else if(document.getElementById("password1").value.indexOf(" ") > - 1) 
        {
            alert("Spaces are not allowed in passwords!");
            return false;
        }
        //Check passwords are the same
        else
        {
            if(pw1 !== pw2) 
            {
                alert("The passwords you entered were not the same. Please try again!");
                return false;
            }
            else
            {
                alert("Password accepted!");
                return true;
            }
        }

    }

HTML

<form id="register">
    <label for="username">Username</label>
    <input type="text" class="input_text" name="username" id="name" placeholder="e.g. AberLibrary01" />
    <br />
    <label for="password">Password</label> 
    <input type="text" class="input_text" name="password1" id="password1" placeholder="e.g. aber01" />
    <br />
    <label for="re-enterpassword">Re-enter password</label>
    <input type="text" class="input_text" name="password2" id="password2" placeholder="e.g. aber01" />

    <input type="submit" class="button" onclick="validate()" value="Register" />
    </form>
于 2012-07-03T15:11:12.260 に答える