178 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			178 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | |||
|  | title: Form Validation | |||
|  | --- | |||
|  | 
 | |||
|  | ## Form Validation
 | |||
|  | Form validation normally used to occur at the server, after the client had entered all the necessary data and then pressed the Submit button. If the data | |||
|  | entered by a client was incorrect or was simply missing, the server would have to send all the data back to the client and request that the form be | |||
|  | resubmitted with correct information. This was really a lengthy process which used to put a lot of burden on the server. | |||
|  | 
 | |||
|  | JavaScript provides a way to validate form's data on the client's computer before sending it to the web server. Form validation generally performs two | |||
|  | functions: | |||
|  | 
 | |||
|  | ### Basic Validation
 | |||
|  | First of all, the form must be checked to make sure all the mandatory fields are filled in. It would require just a loop through each field in the form and | |||
|  | check for data. | |||
|  | 
 | |||
|  | ### Data Format Validation
 | |||
|  | Secondly, the data that is entered must be checked for correct form and value. Your code must include appropriate logic to test correctness of data. | |||
|  | 
 | |||
|  | #### Example:
 | |||
|  | 
 | |||
|  | ```html | |||
|  | <html> | |||
|  |     | |||
|  |    <head> | |||
|  |       <title>Form Validation</title> | |||
|  |        | |||
|  |       <script type="text/javascript"> | |||
|  |          <!--
 | |||
|  |             // Form validation code will come here. | |||
|  |          //--> | |||
|  |       </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> | |||
|  | ``` | |||
|  | 
 | |||
|  | #### Output
 | |||
|  | Lookout [here](https://liveweave.com/LP9eOP) | |||
|  | 
 | |||
|  | ### Basic Form Validation
 | |||
|  | 
 | |||
|  | First let us see how to do a basic form validation. In the above form, we are calling validate() to validate data when onsubmit event is occurring. The | |||
|  | following code shows the implementation of this `validate()` function. | |||
|  | 
 | |||
|  | ```html | |||
|  | <script type="text/javascript"> | |||
|  |    // Form validation code will come here. | |||
|  |    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> | |||
|  | ``` | |||
|  | 
 | |||
|  | #### Output
 | |||
|  | Lookout [here](https://liveweave.com/pCPTnP) | |||
|  | 
 | |||
|  | ### Data Format Validation
 | |||
|  | 
 | |||
|  | Now we will see how we can validate our entered form data before submitting it to the web server. | |||
|  | 
 | |||
|  | The following example shows how to validate an entered email address. An email address must contain at least a ‘@’ sign and a dot (.). Also, the ‘@’ must | |||
|  | not be the first character of the email address, and the last dot must at least be one character after the ‘@’ sign. | |||
|  | 
 | |||
|  | #### Example:
 | |||
|  | 
 | |||
|  | ```html | |||
|  | <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> | |||
|  | ``` | |||
|  | 
 | |||
|  | #### Output
 | |||
|  | Lookout [here](https://liveweave.com/nznVs6) | |||
|  | 
 | |||
|  | 
 | |||
|  | ### HTML5 Form Constraints
 | |||
|  | 
 | |||
|  | Some of commonly used HTML5 constraints for `<input>` are the `type` attribute (e.g. `type="password"`), `maxlength`, `required`and `disabled`. A less | |||
|  | commonly used constraint is the `pattern` attrinute that takes JavaScript regular expression. | |||
|  | 
 | |||
|  | ### Validation Libraries
 | |||
|  | Examples of validation libraries include: | |||
|  | * [Validate.js](http://rickharrison.github.com/validate.js/) | |||
|  | * [Validation](http://bassistance.de/jquery-plugins/jquery-plugin-validation/) | |||
|  | * [Valid8](http://unwrongest.com/projects/valid8/) | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  | ### More Information
 | |||
|  | * [Form Data Validation | MDN](https://developer.mozilla.org/en-US/docs/Learn/HTML/Forms/Form_validation) | |||
|  | * [Constraint validation | MDN](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/HTML5/Constraint_validation) | |||
|  | * [Tutorialspoint](https://www.tutorialspoint.com/javascript/javascript_form_validations.htm) |