多次验证检查 - 逻辑错误

时间:2012-07-03 14:57:54

标签: javascript html forms validation

我在密码表单上提供验证功能。我需要能够实现一些验证规则,并在提交时对它们进行全部检查。现在对我来说代码是合理的,但我认为我的代码中可能存在一些逻辑错误,我太累了,不能注意到(咖啡机也是如此!)

这是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社区的任何想法?确切的问题是它不会检查密码中的空格或输入的两个密码是否相同。它成功检查两个密码字段中是否至少存在某些内容。

谢谢Dan

2 个答案:

答案 0 :(得分:0)

这一行:

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

invalid未定义,我怀疑这会导致您遇到的问题。

答案 1 :(得分:0)

对代码进行了更改,使其正常运行http://jsbin.com/igonec/edit#preview

错误

  1. 使用var pw1 = document.forms [“register”] [“password1”]。它导致了错误
  2. 想念别人。
  3. 使用无效而非“”。
  4. 错误使用括号。
  5. 我省略了你的错误,使解决方案更加优雅。

    Javascipt

        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>