JavaScript表单验证


表单验证通常是在客户端输入所有必要数据然后按下Submit按钮之后在服务器上进行的。如果客户端输入的数据不正确或完全丢失,则服务器必须将所有数据发送回客户端,并要求重新提交带有正确信息的表单。这确实是一个漫长的过程,曾经给服务器带来很多负担。

JavaScript提供了一种在将表单数据发送到Web服务器之前在客户端计算机上对其进行验证的方法。表单验证通常执行两个功能。

  • 基本验证:首先,必须检查表单以确保填写了所有必填字段。只需要循环遍历表单中的每个字段并检查数据即可。

  • 数据格式验证:其次,必须检查输入的数据的正确形式和值。你的代码必须包含适当的逻辑以测试数据的正确性。

我们将以一个例子来了解验证过程。这是html格式的简单表格。

<html>   
    <head>
        <title>Form Validation</title>
        <script type = "text/javascript">
            <!--
                //表单验证代码将在此处提供。
            //->
        </script>
    </head>
   
    <body>
        <form action = "/cgi-bin/test.cgi" name = "myForm" onsubmit = "return(validate());">
            <table cellspacing = "2" cellpadding = "2" border = "1">
            
                <tr>
                    <td align = "right">Name</td>
                    <td><input type = "text" name = "Name" /></td>
                </tr>
            
                <tr>
                    <td align = "right">EMail</td>
                    <td><input type = "text" name = "EMail" /></td>
                </tr>
            
                <tr>
                    <td align = "right">Zip Code</td>
                    <td><input type = "text" name = "Zip" /></td>
                </tr>
            
                <tr>
                    <td align = "right">Country</td>
                    <td>
                        <select name = "Country">
                            <option value = "-1" selected>[choose yours]</option>
                            <option value = "1">USA</option>
                            <option value = "2">UK</option>
                            <option value = "3">INDIA</option>
                        </select>
                    </td>
                </tr>
            
                <tr>
                    <td align = "right"></td>
                    <td><input type = "submit" value = "Submit" /></td>
                </tr>
            
            </table>
        </form>
    </body>
</html>

基本表格验证


首先让我们看看如何进行基本的表单验证。在上面的表格中,我们称validate()在什么时候验证数据onsubmit事件正在发生。以下代码显示了validate()函数的实现。

<script type = "text/javascript">
    <!--
        //表单验证代码将在此处提供。
        function validate() {
      
            if( document.myForm.Name.value == "" ) {
                alert( "Please provide your name!" );
                document.myForm.Name.focus() ;
                return false;
            }
            if( document.myForm.EMail.value == "" ) {
                alert( "Please provide your Email!" );
                document.myForm.EMail.focus() ;
                return false;
            }
            if( document.myForm.Zip.value == "" || isNaN( document.myForm.Zip.value ) ||
                document.myForm.Zip.value.length != 5 ) {
            
                alert( "Please provide a zip in the format #####." );
                document.myForm.Zip.focus() ;
                return false;
            }
            if( document.myForm.Country.value == "-1" ) {
                alert( "Please provide your country!" );
                return false;
            }
            return( true );
        }
    //->
</script>

数据格式验证


现在,我们将看到如何在将输入的表单数据提交到Web服务器之前对其进行验证。

以下示例显示了如何验证输入的电子邮件地址。电子邮件地址必须至少包含一个“ @”符号和一个点(。)。另外,“ @”一定不能是电子邮件地址的第一个字符,最后一个点必须至少是“ @”符号后的一个字符。

请尝试以下代码进行电子邮件验证。

<script type = "text/javascript">
    <!--
        function validateEmail() {
            var emailID = document.myForm.EMail.value;
            atpos = emailID.indexOf("@");
            dotpos = emailID.lastIndexOf(".");
         
            if (atpos < 1 || ( dotpos - atpos < 2 )) {
                alert("Please enter correct email ID")
                document.myForm.EMail.focus() ;
                return false;
            }
            return( true );
        }
    //->
</script>