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)
|