检查完所有字段

时间:2015-12-13 16:40:29

标签: javascript jquery ajax forms

我有一个注册表单,其中我已经获取了客户的一些基本详细信息和一个提交按钮。 我已使用ajax验证所有字段,但使用javascript确认密码字段。当我只使用Ajax编写代码而没有验证确认密码字段时,它运行得很好,但问题是当我使用JS提交按钮进行验证时没有启用。 注册表格:

<html>
<head>
    <title> Registration Form </title>
    <script language="javascript">
        var flag = false;
        function validate(element)
        {

            var xmlhttp;
            if (window.XMLHttpRequest)
            {
                xmlhttp = new XMLHttpRequest();
            }
            else
            {
                xmlhttp = new Activexobject("Microsoft.XMLHTTP");
            }
            var myField = element;
            xmlhttp.open('GET', 'validate.php?' + myField.id + "=" + myField.value, true);
            xmlhttp.send();
            xmlhttp.onreadystatechange = function ()
            {
                //alert("Hello");
                if (xmlhttp.readyState === 4 && xmlhttp.status === 200)
                {
                    var response = xmlhttp.responseText.split("||");
                    //alert("H2");
                }
                var divname = "err" + myField.id.substring(3);
                var mydiv = document.getElementById(divname);
                if (!eval(response[0]))
                {
                    //alert("Fail");
                    //alert("Value: "+response);
                    mydiv.innerHTML = response[1];
                    myField.valid = false;
                }
                else
                {
                    //alert("Success");
                    myField.valid = true;
                    mydiv.innerHTML = "";

                }
                var btn = document.getElementById("btnSubmit");
                btn.disabled = !isValidForm();
            }
        }
        ;
        function password()
        {
            var pass = document.getElementById("txtpswd").value;
            var Confirm_pass = document.getElementById("txtConfirmpassword").value;
            alert("Pass " + pass);
            alert("Confirm: " + Confirm_pass);
            if (pass == Confirm_pass)
            {
                flag = true;
                alert("True");
                document.getElementById("errConfirmpassword").innerHTML = "";
            }
            else
            {
                alert("False");
                flag = false;
                document.getElementById("errConfirmpassword").innerHTML = "Password does not Match";
            }
        }
        ;
        function isValidForm()
        {
            var f1 = document.getElementById("txtfname");
            var f2 = document.getElementById("txtlname");
            var f3 = document.getElementById("txtaddress");
            var f4 = document.getElementById("txtzip");
            var f5 = document.getElementById("txtnumber");
            var f6 = document.getElementById("txtmail");
            var f7 = document.getElementById("txtpswd");
            var f8 = document.getElementById("txtConfirmpassword");
            return(f1.valid && f2.valid && f3.valid && f4.valid && f5.valid && f6.valid && f7.valid && f8.valid);
        }
        ;
    </script>
</head>
<body>
<center>
    <h1><font color="red"> New User Registration Form </font></h1>
    <form name="SignUpForm" method="POST" action="function_customer.php?val=insert">

        <table>
            <tr>
                <td id=q> <font face="Century Schoolbook"> First Name :</font></td> <br>
            <td> <input type=text name=txtfname id="txtfname" placeholder=First_name onchange="validate(this);" valid=false> </td>
            <td><div id="errfname"/></td>
            </tr>
            <tr>
                <td id=q> Last Name :</td>
                <td> <input type=text name=txtlname id="txtlname" placeholder=Last_Name onchange="validate(this);" valid=false> </td>
                <td><div id="errlname"/></td>
            </tr>
            <tr>
                <td id=q>Address : </td><br>
            <td> <textarea rows=5 cols=20 name="txtaddress" id="txtaddress" onchange="validate(this);" valid=false>
                </textarea>
            </td>
            <td><div id="erraddress"/></td>
            </tr>

            <tr>
                <td id=q> Contact no : </td>
                <td> <input type=text name="txtnumber" id="txtnumber" onchange="validate(this);" valid=false> </td>
                <td><div id="errnumber"/></td>
            </tr>



            <tr>
                <td id=q> Gender </td>
                <td> <select name="txtcity" id="gender">
                        <option value="Male"> Male </option>
                        <option value="Female"> Female </option>
                    </select>
                </td>
            </tr>
            <tr>
                <td id=q> City </td>
                <td>
                    <select name="txtcity" id="txtcity">
                        <option> City </option>
                        <option value="Vadodara"> Vadodara </option>
                        <option value="Ahmedabad"> Ahmedabad </option>
                        <option value="Surat"> Surat </option>
                        <option value="Rajkot"> Rajkot </option>
                        <option value="Bhavnagar">Bhavnagar</option>
                        <option value="Jamnagar">Jamnagar</option>
                        <option value="Nadidad">Nadidad</option>
                        <option value="Morvi">Morvi</option>
                        <option value="Gandhidham">Gandhidham</option>
                        <option value="Adipur">Adipur</option>
                        <option value="Anand">Anand</option>
                        <option value="Baruch">Baruch</option>
                        <option value="Godhra">Godhra</option>
                        <option value="Veraval">Veraval</option>
                        <option value="Navsari">Navsari</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td id=q> ZIP : </td>
                <td> <input type=text name=txtzip id="txtzip" onchange="validate(this);" valid=false> </td>
                <td><div id="errzip"/></td>
            </tr>
            <tr>
                <td id=q> Email Id : </td>
                <td> <input type="email" name=txtmail placeholder=someone@exe.com id="txtmail" onchange="validate(this);" valid=false> </td>
                <td><div id="errmail"/></td>
            </tr>
            <tr>
                <td id=q> New Password :  </td>
                <td> <input type="password" name="txtpswd" id="txtpswd" onchange="validate(this);" valid=false>
                </td>
                <td><div id="errpswd"/></td>
            </tr>
            <tr>
                <td id=q>Confirm Password :  </td><td><input type="password" name=txtConfirmpassword id="txtConfirmpassword" onchange="password();" valid=false>
                </td>
                <td><div id="errConfirmpassword"/></td>
            </tr>

            <tr>
                <td></td><td><input type=reset name=reset value=Reset>
                    <a href=Submit.htm><input type=submit name=btnSubmit value=Submit disabled="true" id="btnSubmit"></a>
                </td>
            </tr>

            <tr>

            </tr>
        </table>
    </form>
    <br>
    <br>
    <br>
    <br><br>

</center>
</body>
</html>
What should I do to validate all the fields and enabling the Submit Button?

1 个答案:

答案 0 :(得分:0)

首先,我建议您阅读最新的HTML元素,并使用CSS对元素进行居中或样式设置,避免使用<font><center>等过时元素。

话虽如此,您的代码中的问题是您没有在密码和密码之后调用validate()来检查表单是否有效。确认密码字段匹配,因此请更改您的password(),如下所示。

       function password(){
            var btn = document.getElementById("btnSubmit");
            var pass = document.getElementById("txtpswd").value;
            var confirm_pass =  document.getElementById("txtConfirmpassword").value;

            var pwdErrorElement = document.getElementById("errConfirmpassword");

            if (pass === confirm_pass){
                flag = true;
                pwdErrorElement.innerHTML = "";
                btn.disabled = !isValidForm();
            }else{
                flag = false;
                pwdErrorElement.innerHTML = "Password does not Match";
                btn.disabled = true;
            }
        }

另外,我建议您在每个字段上使用value属性来在客户端进行验证,而不是为每个字段更改进行服务器调用。您可以通过更改isValidForm()中的最后一个语句来使用字段值进行验证。

    function isValidForm(){
          // get all the field references

            return(f1.value && f2.value && f3.value && f4.value 
                  && f5.value && f6.value && f7.value && f8.value);
    } 

完成JS验证后,您可以启用提交按钮,并在表单提交时在服务器端立即对所有字段进行验证。我的意思是使用JS进行客户端验证的目的。您不希望每次换字都要求反馈(有效与否)。

这是一个有效的Pen,其中包含以上所有更改。

相关问题