详解JavaScript中的表单验证
表单验证用于发生在服务器,客户端已经输入所有必要的数据,然后按下提交按钮之后。如果一些已被输入的客户端的数据的已在错误形式或者被简单地丢失,则服务器将必须的所有数据发送回客户端,并请求的形式以正确的信息重新提交。这是一个漫长的过程,会增加服务器负担。
JavaScript中,提供了一种方法将其发送到web服务器之前验证客户端的计算机上的形式的数据。表单验证通常执行两种方式。
- 基本验证-首先,该表必须进行检查,以确保数据输入的需要将其每一个表单字段。这将通过表格的每个字段只需要循环,并检查数据。
- 数据格式验证-其次,该被输入的数据必须检查正确格式和值。这将需要放置更多的逻辑来测试数据的正确性。
我们将举一个例子来了解验证的过程。下面是简单的形式进行:
<html> <head> <title>FormValidation</title> <scripttype="text/javascript"> <!-- //Formvalidationcodewillcomehere. //--> </script> </head> <body> <formaction="/cgi-bin/test.cgi"name="myForm" onsubmit="return(validate());"> <tablecellspacing="2"cellpadding="2"border="1"> <tr> <tdalign="right">Name</td> <td><inputtype="text"name="Name"/></td> </tr> <tr> <tdalign="right">EMail</td> <td><inputtype="text"name="EMail"/></td> </tr> <tr> <tdalign="right">ZipCode</td> <td><inputtype="text"name="Zip"/></td> </tr> <tr> <tdalign="right">Country</td> <td> <selectname="Country"> <optionvalue="-1"selected>[chooseyours]</option> <optionvalue="1">USA</option> <optionvalue="2">UK</option> <optionvalue="3">INDIA</option> </select> </td> </tr> <tr> <tdalign="right"></td> <td><inputtype="submit"value="Submit"/></td> </tr> </table> </form> </body> </html>
基本表单验证:
首先,我们将展示如何做一个基本的表单验证。在上面的表格要求validate()函数来验证数据在onsubmit事件发生。以下是validate()函数的实现:
<scripttype="text/javascript"> <!-- //Formvalidationcodewillcomehere. functionvalidate() { if(document.myForm.Name.value=="") { alert("Pleaseprovideyourname!"); document.myForm.Name.focus(); returnfalse; } if(document.myForm.EMail.value=="") { alert("PleaseprovideyourEmail!"); document.myForm.EMail.focus(); returnfalse; } if(document.myForm.Zip.value==""|| isNaN(document.myForm.Zip.value)|| document.myForm.Zip.value.length!=5) { alert("Pleaseprovideazipintheformat#####."); document.myForm.Zip.focus(); returnfalse; } if(document.myForm.Country.value=="-1") { alert("Pleaseprovideyourcountry!"); returnfalse; } return(true); } //--> </script>
数据格式验证:
现在,我们将看到我们如何将其提交到Web服务器之前,验证我们输入的表单数据。
这个例子说明了如何验证输入的电子邮件地址,这意味着电子邮件地址必须至少包含一个@符号和一个点(.)。此外,@绝不能是电子邮件地址的第一个字符,最后点必须在@符号后面的一个字符:
<scripttype="text/javascript"> <!-- functionvalidateEmail() { varemailID=document.myForm.EMail.value; atpos=emailID.indexOf("@"); dotpos=emailID.lastIndexOf("."); if(atpos<1||(dotpos-atpos<2)) { alert("PleaseentercorrectemailID") document.myForm.EMail.focus(); returnfalse; } return(true); } //--> </script>