Form validation made easy
jQuery Form Validator is a feature rich and multilingual jQuery plugin that
makes it easy to validate
user input while keeping your HTML markup clean from javascript code. Even
though this
plugin has a wide range of validation functions it's designed to require as little
network traffic as possible. This is achieved by grouping together validation
functions in
"modules", making it possible to load only those functions
that's needed to validate a particular form.
This plugin is available through cdnjs, npm, bower and github.
Basic example
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-form-validator/2.3.26/jquery.form-validator.min.js"></script> <script> $.validate({ lang: 'es' }); </script>
Support for HTML5

The html5 module makes it possible to validate user input using the native attributes, in accordance to the HTML5 specification.
Form demo
The following form contains some typical validators needed in a registration form. This jQuery plugin has support for a lot more validation functions, you find them all in the menu to the right.
Read the setup guide if you want to know which configuration options that are available when setting up the validation.
Here you can read more about styling of the form and error dialogs.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-form-validator/2.3.26/jquery.form-validator.min.js"></script> <script> $.validate({ modules : 'location, date, security, file', onModulesLoaded : function() { $('#country').suggestCountry(); } }); // Restrict presentation length $('#presentation').restrictLength( $('#pres-max-length') ); </script> ...
Default validators
The default features of this plugin doesn't require you to load any module. Here you can try out a complete form with all default validators present.
Answer length (required)
This plugin also supports the attributes "required" and "maxlength" by using the Html5 module.
Numbers
You can also define the decimal separator when initializing the validation.
</form> <script> $.validate({ decimalSeparator : ',' }); </script>Average points
....
Inputs of type "number" will also become validated by loading the html5 module.
Inputs of type "email" will also become validated by loading the html5 module.
URL:s
Inputs of type "url" will also become validated by loading the html5 module.
Date
See the date module for further validators.
Alphanumeric
If you want to allow any kind of letters (not only A-Z) you're looking for the letternumeric validator.
Checkboxes Group
Validate qty of checkboxes in a group (same name) have been checked, using min, max or range. Only the first checkbox element in the group needs to have the validation attributes added.
If your checkboxes group is generated by a server-side script and you don't want to add the validation attributes to each input element, you can use this javascript snippet before calling the validatorLoad() function
<!-- Add validation attributes to first input element in checkboxes group, before loading validator --> <script> $("[name='newsletters[]']:eq(0)") .valAttr('','validate_checkbox_group') .valAttr('qty','1-2') .valAttr('error-msg','chose 1, max 2'); </script>
Regexp
This plugin also supports the attribute "pattern" by using the Html5 module.
Character count down
<script> $('#area').restrictLength($('#maxlength')); </script>History (50 characters left)
Make validation optional
You can also use the logic module if you want the validation of an input depend on another input having a value.
Display help text
It is possible to display help information beside each input. The text will fade in when the input gets focus on and fade out when the input looses focus. The container for the help text will have the class form-help. If you don't want this feature you can read the setup guide on how to disable it.
Validate inputs when blurred
By default each input will become validated immediately when the input looses focus. If you don't want this feature you can read the setup guide on how to disable it.
Input suggestions
There are two ways you can give suggestions to the user while the user types.
</form>What's your favorite color?
...
<script> var largeArray = []; largeArray.push('Something'); largeArray.push('Something else'); ... $.formUtils.suggest( $('#the-input'), largeArray ); </script>
This plugin also supports the data-list
element by using
the Html5 module.
Ignoring characters
You can tell any validator to ignore certain characters by using the attribute
data-validation-ignore
(comma separated list).
How much do you want to donate?
Example form
Here you can read more about styling of the form and error dialogs.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-form-validator/2.3.26/jquery.form-validator.min.js"></script> <script> $.validate(); $('#my-textarea').restrictLength( $('#max-length-element') ); </script> ...
Read the setup guide if you want to know which configuration options that's available when setting up the validation.
Security validators
This module contains validators commonly used in registration forms. Here you can try an example form with all the security validators in action.
The following code shows you how to load the module.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-form-validator/2.3.26/jquery.form-validator.min.js"></script> <script> $.validate({ modules : 'security' }); </script>
Password confirmation
This validator can be used to validate that the values of two inputs are the same. The first input should have a name suffixed with _confirmation and the second should have the same name but without the suffix.
Password (at least 8 characters) Confirm password
As of version 2.2.1 you can use the attribute data-validation-confirm
to define
which other input that the second input should confirm.
E-mail Repeat e-mail
Password strength
Use this validator to make sure that your user has a strong enough password. Set attribute
data-validation-strength
to 1, 2 or 3 depending on how strong password you require.
If you want the strength of the password to be displayed while the user types you call
displayPasswordStrength()
in the end of the form.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-form-validator/2.3.26/jquery.form-validator.min.js"></script> <script> $.validate({ modules : 'security', onModulesLoaded : function() { var optionalConfig = { fontSize: '12pt', padding: '4px', bad : 'Very bad', weak : 'Weak', good : 'Good', strong : 'Strong' }; $('input[name="pass"]').displayPasswordStrength(optionalConfig); } }); </script>
Validate on server side
By using this validator you can validate the value given by the user on the server before the
form gets submitted.
The validation function will send a POST request to the URL declared in
data-validation-url
.
The argument posted to the URL will have the same name as the input being validated.
The form will get the class validating-server-side while the server is being requested.
The response from the validation script must be a JSON formatted object, containing the properties "valid" and "message".
{ "valid" : true|false, "message" : "String with text that should be displayed as error message" }
<?php $response = array( 'valid' => false, 'message' => 'Post argument "user" is missing.' ); if( isset($_POST['user']) ) { $userRepo = new UserRepository( DataStorage::instance() ); $user = $userRepo->loadUser( $_POST['user'] ); if( $user ) { // User name is registered on another account $response = array('valid' => false, 'message' => 'This user name is already registered.'); } else { // User name is available $response = array('valid' => true); } } echo json_encode($response);
Modifying the server request
The parameter containing the input value, sent to the server, will by default have the same
name as the input. You can however set your own parameter name by using the attribute
data-validation-param-name
. You can also send along other parameters to the server
by using the attribute data-validation-req-params
.
<?php $json = json_encode(array('user'=>$user->get('ID'))); ?> <p> <strong>E-mail:</strong> <input type="email" name="check-email" data-validation="server" data-validation-url="/validate-form-input.php" data-validation-param-name="email" data-validation-req-params="<?php echo $json ?>" /> </p>
Credit card validation
This validator makes it possible to validate any of the credit cards VISA, Mastercard, Diners club, Maestro, CJB, Discover and American express
<-- Accept credit card number from Visa, Mastercard and American Express -->Credit card number
Security code (cvv)
You can also let the user choose a credit card and programmatically change the allowed credit card on the input of the card number.
<script> $.validate({ modules : 'security', onModulesLoaded : function() { // Bind card type to card number validator $('#credit-card').on('change', function() { var card = $(this).val(); $('input[name="creditcard_num"]').attr('data-validation-allowing', card); }); } }); </script>Credit card
Credit card number
...
Simple captcha
<?php session_start(); if( isset($_POST['captcha']) && isset($_SESSION['captcha'])) { if( $_POST['captcha'] != ($_SESSION['captcha'][0]+$_SESSION['captcha'][1]) ) { die('Invalid captcha answer'); // client does not have javascript enabled } // process form data ... } $_SESSION['captcha'] = array( mt_rand(0,9), mt_rand(1, 9) ); ?> <form action=""> <p> What is the sum of <?=$_SESSION['captcha'][0]?> + <?=$_SESSION['captcha'][1]?>? (security question) <input name="captcha" data-validation="spamcheck" data-validation-captcha="<?=( $_SESSION['capthca'][0] + $_SESSION['captcha'][1] )?>"/> </p> <p><input type="submit" /></p> </form> ...
Google reCAPTCHA
Use this validator if wanting to integrate the Google service reCAPTCHA.
You can also use the setup function to configure the recaptcha service.
$.validate({ reCaptchaSiteKey: '...', reCaptchaTheme: 'light' });
Letters and numbers
By using the validator letternumeric
you can validate that given input value only
contains letters
and/or numbers. This validator allows any type of character in contrast to the alphanumeric validator, which only allows
letters A-Z.
Example form
Here you can read more about styling of the form and error dialogs.
<html> <head> <style type="text/css"> /* Add ajax preloader when server is being requested */ .validating-server-side { background: url(static/img/ajax-preloader.gif) no-repeat center right; opacity: 0.6 } </style> ...<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-form-validator/2.3.26/jquery.form-validator.min.js"></script> <script> $.validate({ modules : 'security', onModulesLoaded : function() { // Show strength of password $('input[name="pass_confirmation"]').displayPasswordStrength(); // Bind card type to card number validator $('#card').on('change', function() { var card = $(this).val(); $('input[name="ccard_num"]').attr('data-validation-allowing', card); }); } }); </script> ...
Date validators
This module contains validators needed when validating dates and time. Here you can try an example form with all the date validators in action.
The following code shows you how to load the module.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-form-validator/2.3.26/jquery.form-validator.min.js"></script> <script> $.validate({ modules : 'date' }); </script>
Birthdate
This validator is the same as the default date validator except that it only allows past dates and dates that is not older than 120 years.
Time
Example form
Here you can read more about styling of the form and error dialogs.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-form-validator/2.3.26/jquery.form-validator.min.js"></script> <script> $.validate({ modules : 'date' }); </script> ...
File validators
This module contains validators needed when validating file uploads. All the validators in this
module, except for extension
,
requires that the browser has implemented the File API (http://caniuse.com/#feat=fileapi).
The following code shows you how to load the module.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-form-validator/2.3.26/jquery.form-validator.min.js"></script> <script> $.validate({ modules : 'file' }); </script>
File size
This validation is only supported by Internet Explorer 10, Mozilla FireFox v >= 3.6 and any of the later versions of webkit based browsers.
File type
This validation will fall back on checking the file extension in older browsers. In modern
browsers the validation will check that any of the extensions in
data-validation-allowing
exists in the mime type declaration of the file. This means that
data-validation-allowing="pdf"
will work in both modern browsers (checking against "application/pdf") and older
browsers (checking
the file extension ".pdf").
Validating multiple files (with separate error messages depending on failed validation):
<input type="file" multiple="multiple" name="images" data-validation="length mime size" data-validation-length="min2" data-validation-allowing="jpg, png, gif" data-validation-max-size="512kb" data-validation-error-msg-size="You can not upload images larger than 512kb" data-validation-error-msg-mime="You can only upload images" data-validation-error-msg-length="You have to upload at least two images" />
Image dimension and ratio
Use the validator dimension
to check the dimension of an image (jpg, gif or png).
Use the attribute data-validation-ratio
to validate that the uploaded image has a
certain ratio
Location validators
This module contains validators needed when validating geographical data. Here you can try an example form with all the location validators in action.
The following code shows you how to load the module.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-form-validator/2.3.26/jquery.form-validator.min.js"></script> <script> $.validate({ modules : 'location' }); </script>
Country
State (US)
Longitude, Latitude
Suggest country/state
By using this function you'll make it easier for your visitor to input a country or state.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-form-validator/2.3.26/jquery.form-validator.min.js"></script> <script> $.validate({ modules : 'location', onModulesLoaded : function() { $('input[name="user_country"]').suggestCountry(); $('input[name="user_home_state"]').suggestState(); } }); </script>
Example form
Here you can read more about styling of the form and error dialogs.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-form-validator/2.3.26/jquery.form-validator.min.js"></script> <script> $.validate({ modules : 'location', onModulesLoaded : function() { $('input[name="state"]').suggestCountry(); $('input[name="country"]').suggestState(); } }); </script> ...
Country specific validators
Here you can read about the different modules that targets validation rules commonly used in certain countries.
Brazil validators
This module contains validators that comes in handy on brazilian websites.
The following code shows you how to load the module.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-form-validator/2.3.26/jquery.form-validator.min.js"></script> <script> $.validate({ modules : 'brazil' }); </script>
Brazilian telephone number
Brazilian Postal Code
Brazilian individual taxpayer registry identification
Poland
This module contains validators that comes in handy on Polish websites.
The following code shows you how to load the module.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-form-validator/2.3.26/jquery.form-validator.min.js"></script> <script> $.validate({ modules : 'poland' }); </script>
Polish personal identity number
Polish business identity number
VAT
Swedish validators
This module contains validators that comes in handy on Swedish websites. Here you can try an example form with all the Swedish validators in action.
The following code shows you how to load the module.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-form-validator/2.3.26/jquery.form-validator.min.js"></script> <script> $.validate({ modules : 'sweden' }); </script>
Validate phone number
Validate social security number
It's also possible to validate that the user has entered a valid gender based on the social security number.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-form-validator/2.3.26/jquery.form-validator.min.js"></script> <script> $.validate({ modules : 'sweden', onValidate : function( $form ) { // We have a valid ssn if( $form.find('input[name="ssn"]').hasClass('valid') ) { var $genderList = $form.find('select[name="gender"]'); if( $genderList.val() != window.ssnGender ) { // Return info about failed validation return { element : $genderList, message : 'You gave an incorrect gender according to your security number' } } } } }); </script>
Validate municipality (kommun)
Validate county (län)
Suggest kommun/län
By using these functions you'll make it easier for your visitors to input a Swedish county or municipality.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-form-validator/2.3.26/jquery.form-validator.min.js"></script> <script> $.validate({ modules : 'sweden', onModulesLoaded : function() { $('input[name="county"]').suggestSwedishCounty(); $('input[name="municipality"]').suggestSwedishMunicipality(); } }); </script>
Example form
Here you can read more about styling of the form and error dialogs.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-form-validator/2.3.26/jquery.form-validator.min.js"></script> <script> $.validate({ modules : 'sweden', onModulesLoaded : function() { $('input[name="lan"]').suggestSwedishCounty(); $('input[name="kommun"]').suggestSwedishMunicipality(); } }); </script> ...
UK validators
This module contains validators that comes in handy on british websites.
The following code shows you how to load the module.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-form-validator/2.3.26/jquery.form-validator.min.js"></script> <script> $.validate({ modules : 'uk' }); </script>
National Insurance number
VAT
Unique Taxpayer Reference Number
Data Sanitation
This module can be used to automatically sanitize input values.
The following code shows you how to load the module.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-form-validator/2.3.26/jquery.form-validator.min.js"></script> <script> $.validate({ modules : 'sanitize' }); </script>
Sanitation options
By using the module sanitize you will be able to declare sanitation functions that will be triggered when inputs looses focus. You declare them using the attribute data-sanitize. The implemented rules are:
- trim
- trimLeft
- trimRight
- upper (convert all letters to upper case)
- lower (convert all letters to lower case)
- capitalize (convert the first letter in all words to upper case)
- insertRight (declare a text that should be inserted at the end of the value, attribute
data-sanitize-insert-right
) - insertLeft (declare a text that should be inserted at the beginning of the value, attribute
data-sanitize-insert-left
) - strip (comma separated list with words that gets automatically removed)
- escape (convert < > & ' " to html entities)
- numberFormat (declare the attribute
data-sanitize-number-format
with any of the formats described on http://numeraljs.com/. Note that this rule requires that numeral.js is included in the page)
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-form-validator/2.3.26/jquery.form-validator.min.js"></script> <script> $.validate({ modules : 'sanitize' }); </script>
Number formatting
By using this module together with numeraljs
you can automatically format
numbers in any way you want. Read more about how to declare number formats over at numeraljs.com
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/numeral.js/1.4.5/numeral.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-form-validator/2.3.26/jquery.form-validator.min.js"></script> <script> $.validate({ modules : 'sanitize' }); </script>
Logic
This module is used when wanting to combine validators in a complex manner.
The following code shows you how to load the module.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-form-validator/2.3.26/jquery.form-validator.min.js"></script> <script> $.validate({ modules : 'logic' }); </script>
Validators depending on each other
Use the attributes data-validation-depends-on
to configure that an input
is optional as long as another input is left without an answer.
Contact me:
E-mail:
... <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-form-validator/2.3.26/jquery.form-validator.min.js"></script> <script> $.validate({ modules : 'location, logic', onModulesLoaded : function() { $('#country-input').suggestCountry(); } }); </script>Country:
State:
Require only one out of several inputs
Use the attribute data-validation-optional-if-answered
to tell the validator
that only one, out of a
group of inputs, requires an answer.
Home phone number:
Cell phone number:
Work phone number:
Sepa (iban/bic)
The following code shows you how to load the module.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-form-validator/2.3.26/jquery.form-validator.min.js"></script> <script> $.validate({ modules : 'sepa' }); </script>
IBAN
BIC
Sepa
Setup and configuration
In this section we will go through the different configuration options
you can use
when setting up the validation.
- Read more about localization.
- Read more about giving input suggestions.
- Read more about making validation optional.
- Read more about showing help information.
Setup
// Setup form validation on all forms $.validate();
// Setup form validation only on the form having id "registration" $.validate({ form : '#registration' });
// Setup form validation on the forms that has id #registration and #login $.validate({ form : '#registration, #login' });
If wanting to refresh the validation setup all you have to do is to call
$.validate()
once more. To remove error messages and error styling you must call the native function
reset()
on the form element.
<script> // Reset form using jQuery $('#container form').get(0).reset(); </script>
Configuration options
- ignore [ ] – Array with name of inputs that shouldn't become validated.
- errorElementClass 'error' – Class that will be applied on elements which value is invalid.
- borderColorOnError '#b94a48' – Border color on inputs which value is invalid (empty string to prevent the change of border color).
- errorMessageClass 'form-error' – Class name of div
containing all error messages when validation fails. This option is only relevant when
having configuration option
errorMessagePosition
set totop
- validationRuleAttribute 'data-validation' – name of the attribute holding the validation rules
- validationErrorMsgAttribute 'data-validation-error-msg' – define custom err msg inline with element
- errorMessagePosition 'element' – Can be either "top" or "inline"
- scrollToTopOnError true
- dateFormat 'yyyy-mm-dd'
- addValidClassOnAll false – whether or not to apply class="valid" even if the input wasn't validated
- decimalSeparator '.'
- inputParentClassOnError 'has-error' – twitter-bootstrap default class name
- inputParentClassOnSuccess 'has-success' – twitter-bootstrap default class name
- validateHiddenInputs false – whether or not hidden inputs should be validated
- inlineErrorMessageCallback null – whether or not hidden inputs should be validated
- submitErrorMessageCallback null – whether or not hidden inputs should be validated
Loading modules
Use the property modules
to declare which modules you want to load. The property
should contain a
comma separated string with module names.
Use the property onModulesLoaded
to declare a function that should be called after
that the modules
has
loaded.
$.validate({ modules : 'date, security', onModulesLoaded : function() { alert('All modules loaded!'); } });
Here you can read more about how to create your own modules.
Validation callbacks
There are four different callbacks you can declare when setting up the validation. There are also two types of events triggered on elements when they get validated.
- onError – Called when the user submits the form and one or more inputs has an invalid value.
- onSuccess – Called when the user submits the form and no input with an invalid value can be found.
- onValidate – Called when the user submits the form and all inputs have become validated. This callback is called before onError/onSuccess. You can add error messages from this callback by returning an object containing the property "element" (referring to the input element having an invalid value) and "message". You can also return an array with error objects if you want to add several error messages. The validation procedure will go on as normally if the callback function doesn't return anything.
- onElementValidate – Called after that an element have become validated.
-
beforeValidation – jQuery event triggered on elements right before
they become validated.
Use this event if you want to prevent validation in runtime by setting
data-validation-skipped="1"
. - validation – jQuery event triggered on elements after they have been validated.
$.validate({ form : '#registration-form', modules : 'security', onError : function($form) { alert('Validation of form '+$form.attr('id')+' failed!'); }, onSuccess : function($form) { alert('The form '+$form.attr('id')+' is valid!'); return false; // Will stop the submission of the form }, onValidate : function($form) { return { element : $('#some-input'), message : 'This input has an invalid value for some reason' } }, onElementValidate : function(valid, $el, $form, errorMess) { console.log('Input ' +$el.attr('name')+ ' is ' + ( valid ? 'VALID':'NOT VALID') ); } }); // Validation event listeners $('input') .on('beforeValidation', function(value, lang, config) { console.log('Input "'+this.name+'" is about to become validated'); // Call $(this).attr('data-validation-skipped', 1); to prevent validation }) .on('validation', function(evt, valid) { console.log('Input "'+this.name+'" is ' + (valid ? 'VALID' : 'NOT VALID')); });
Styling
This plugin is compatible with twitter bootstrap 3.x out of the box. The classes mentioned below is in addition to classes used by twitter bootstrap.
An input that has a valid value will get the class valid
, if the value is invalid
the input will get
the class error
. The error messages is placed in a span element with the class
form-error
.
Both of these class names can be configured using the properties errorElementClass
and errorMessageClass
.
An input with an invalid value will automatically get a red border color. You can use the setup function if you want to change the border color to something else, set the property to an empty string if you don't want the border color to change when the input has an invalid value.
The valid
class will only be applied on inputs that is validated. Set the
configuration option
addValidClassOnAll
to true if you also want the inputs not having any validation
rules to get
the class valid
when the form gets submitted.
$.validate({ borderColorOnError : '#FFF', addValidClassOnAll : true });
A typical markup for a form using twitter bootstrap has each input in a div element with the
class
form-group
and a label element with the class control-label
containing
the description of the input. The input element should have the class form-control
.
<form action="..." role="form"> <div class="form-group"> <label class="control-label" for="the-input">Input description</label> <input type="text" id="the-input" class="form-control" data-validation="required" /> </div> ...
Default theme
You can use the default CSS-theme if you want the styling of the validation elements (error dialogs, icons etc) to look exactly as they do here on formvalidator.net. Add the following stylesheet declaration in the header of your document.
<link href="//cdnjs.cloudflare.com/ajax/libs/jquery-form-validator/2.3.26/theme-default.min.css" rel="stylesheet" type="text/css" />
Disabling features
You can disable some of the features of this plugin by using the following configuration options.
- validateOnBlur – Set this property to false if you only want the form to become validated when the user clicks on the submit button.
- showHelpOnFocus – Set this property to false if you don't want the plugin to search through the form for help information.
- addSuggestions – Set this property to false if you don't want the plugin to search through the form for input suggestions.
$.validate({ validateOnBlur : false, showHelpOnFocus : false, addSuggestions : false });
HTML5 support
As of version 2.2 you can use this plugin as a fallback solution for the validation attributes in the HTML5 specification. Add the module html5 to the module declaration and you can use the following native features:
Attributes: require, pattern, maxlength, min, max, placeholder
Input types: url, date, time, email, number
Elements: Use the element datalist
to create input suggestions
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-form-validator/2.3.26/jquery.form-validator.min.js"></script> <script> $.validate({ modules : 'html5' }); </script>
Positioning the error messages
The configuration parameter errorMessagePosition
is used to tell whether
or not error messages should be displayed in the top of the form or beside each input
when the form gets submitted. The value is either set to top
(which is default) or
inline
.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-form-validator/2.3.26/jquery.form-validator.min.js"></script> <script> $.validate({ validateOnBlur : false, // disable validation when input looses focus errorMessagePosition : 'top' // Instead of 'inline' which is default scrollToTopOnError : false // Set this property to true on longer forms }); </script>
Configure a specific message container for a certain input
You can point out the location of an error message for a certain input by using the attribute
data-validation-error-msg-container
.
E-mail:
Custom methods that handles positioning of error messages
There's two configuration parameters that can be used to control how error messages gets added to the DOM.
$.validate({ inlineErrorMessageCallback: function($input, errorMessage, config) { // Return an element that should contain the error message. // This callback will called when validateOnBlur is set to true (default) and/or errorMessagePosition is set to 'inline' }, submitErrorMessageCallback: function($form, errorMessages, config) { // Return an element that should contain all error messages. // This callback will be called when errorMessagePosition is set to 'top' } });
If wanting to use a custom method that handles the displaying/removing of error messages you should use the two methods described above. Return false to prevent the default behaviour when adding/removing error messages. Example:
$.validate({ inlineErrorMessageCallback: function($input, errorMessage, config) { if (errorMessage) { customDisplayInlineErrorMessage($input, errorMessage); } else { customRemoveInlineError($input); } return false; // prevent default behaviour }, submitErrorMessageCallback = function($form, errorMessages, config) { if (errorMessages) { customDisplayErrorMessagesInTopOfForm($form, errorMessages); } else { customRemoveErrorMessagesInTopOfForm($form); } return false; // prevent default behaviour }; });
Notice that the default configuration uses errorMessagePosition: 'top'
in conjunction with validateOnBlur: true
which means that
inlineErrorMessageCallback
will be called when input is validated on blur and that the
submitErrorMessageCallback
will be called when the form gets submitted.
Localization
In this section we will go through the different options when it comes to localization.
Using built-in languages
This plugin comes with all error dialogs translated into numerous different languages.
Use the configuration parameter lang
when setting up the validation
if you want to override the default language (which is English). Set the value of the
lang-property to the corresponding language code of the desired translation.
$.validate({ lang : 'de' }); /* Supported languages ------------------- Polish: pt Romanian: ro Danish: dk Norwegian: no Dutch: nl Czech: cz Catalan: ca Russian: ru Italian: it French: fr German: de Swedish: se English: en Portuguese: pt */
Inline dialog declaration
You can use the attribute data-validation-error-msg
if you want to declare an error message for a specific input.
If you have declared several validation rules on a single input you might want to have separate
error dialogs for each rule. This is accomplished by using attribute
data-validation-error-msg-[VALIDATION_RULE]
<input name="user" data-validation="required alphanumeric" data-validation-error-msg-required="You must enter a user name" data-validation-error-msg-alphanumeric="User name may only contain alphanumeric characters"/>
Custom language object
All error dialogs can be overwritten by passing an object to the setup function.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-form-validator/2.3.26/jquery.form-validator.min.js"></script> <script> var myLanguage = { errorTitle: 'Form submission failed!', requiredFields: 'You have not answered all required fields', badTime: 'You have not given a correct time', badEmail: 'You have not given a correct e-mail address', badTelephone: 'You have not given a correct phone number', badSecurityAnswer: 'You have not given a correct answer to the security question', badDate: 'You have not given a correct date', lengthBadStart: 'The input value must be between ', lengthBadEnd: ' characters', lengthTooLongStart: 'The input value is longer than ', lengthTooShortStart: 'The input value is shorter than ', notConfirmed: 'Input values could not be confirmed', badDomain: 'Incorrect domain value', badUrl: 'The input value is not a correct URL', badCustomVal: 'The input value is incorrect', andSpaces: ' and spaces ', badInt: 'The input value was not a correct number', badSecurityNumber: 'Your social security number was incorrect', badUKVatAnswer: 'Incorrect UK VAT Number', badStrength: 'The password isn\'t strong enough', badNumberOfSelectedOptionsStart: 'You have to choose at least ', badNumberOfSelectedOptionsEnd: ' answers', badAlphaNumeric: 'The input value can only contain alphanumeric characters ', badAlphaNumericExtra: ' and ', wrongFileSize: 'The file you are trying to upload is too large (max %s)', wrongFileType: 'Only files of type %s is allowed', groupCheckedRangeStart: 'Please choose between ', groupCheckedTooFewStart: 'Please choose at least ', groupCheckedTooManyStart: 'Please choose a maximum of ', groupCheckedEnd: ' item(s)', badCreditCard: 'The credit card number is not correct', badCVV: 'The CVV number was not correct', wrongFileDim : 'Incorrect image dimensions,', imageTooTall : 'the image can not be taller than', imageTooWide : 'the image can not be wider than', imageTooSmall : 'the image was too small', min : 'min', max : 'max', imageRatioNotAccepted : 'Image ratio is not accepted' }; $.validate({ language : myLanguage }); </script>
Other developers has also read
Advanced examples
Validate programatically
You can use the function $.fn.validate
if you want to trigger the validation
programmatically.
$('#the-input').validate(function(valid, elem) { console.log('Element '+elem.name+' is '+( valid ? 'valid' : 'invalid')); }); // Override configuration set when $.validate() was called $('#container').validate(function(valid, elem) { console.log('Element '+elem.name+' is '+( valid ? 'valid' : 'invalid')); }, {errorMessagePosition: $('#error-wrapper')});
Validate form without submit
You can use the method $.fn.isValid(lang, config, displayErrors)
if you want to
validate a form programmatically.
The function takes three arguments. The first argument being an object used to override the
default
error dialogs and the second argument
being the configuration object. Use the third argument to tell the validation function
if error dialogs should be displayed or not.
Here you can see an example code where we collect all the error dialogs during the validation and pass them on to a custom function displaying the error dialogs.
// Array used as error collection var errors = [], // Validation configuration conf = { onElementValidate : function(valid, $el, $form, errorMess) { if( !valid ) { // gather up the failed validations errors.push({el: $el, error: errorMess}); } } }, // Optional language object lang = { ... }; // Manually load the modules used in this form $.formUtils.loadModules('security, date'); $('#check-form').on('click', function() { // reset error array errors = []; if( !$(this).isValid(lang, conf, false) ) { displayErrors( errors ); } else { // The form is valid } }); </script>
Notice! This method won't be able to tell if the form is valid if your'e using asynchronous validators, like the server-side validator and the image dimensions validator. In such a case you must combine the method call with the onSuccess callback.
Setup validation using only JavaScript
The whole point of this plugin is to not having to write JavaScript code when configuring form validations. If you feel the need to configure your form validation using JavaScript you probably should look into jquery-validation or formvalidation.io or any of the other superb form validation solutions out there.
But there is of course a way to accomplish this using jQuery-Form-Validator as well, by
using the module jsconf
.
<script> var config = { // ordinary validation config form : 'form' // reference to elements and the validation rules that should be applied validate : { 'input-name' : { validation : 'length, alphanumeric', length : '5-12', '_data-sanitize': 'trim', }, '.password-input-class' : { validation : 'length, strength' strength : '3', length : 'min10' }, '#date-input-id' : { validation : 'date', format : 'dd/mm/yyyy' } } }; $.validate({ modules : 'jsconf, security', onModulesLoaded : function() { $.setupValidation(config); } }); </script>
The first call to $.validate
should only contain the module declaration
(it must also contain jsconf) and a callback for the event onModulesLoaded
.
In the callback you invoke the function $.setupValidation
with the configuration
object as argument.
The configuration object supports all the ordinary configuration options. Use the
property validate
to tell the jsconf-module which elements that should have
validation rules. Begin the
property with _
if you want
to add an attribute without the data-validation prefix.
All the configuration options for each validation rule is also supported.
When applying them via markup they're all prefixed with
data-validation
. When declaring them using the jsconf-module
you simply exclude the prefix.
<input type="file" multiple="multiple" name="images" data-validation="length mime size" data-validation-optional="true" data-validation-length="min2" data-validation-allowing="jpg, png, gif" data-validation-max-size="512kb" data-validation-error-msg="Error message..." />
Would be translated into:
var conf = { ... validate : { images : { 'validation' : 'length mime size', 'optional' : true, 'length' : 'min2' 'allowing' : 'jpg, png, gif', 'max-size' : '512kb', 'error-msg' : 'Error message...' } } };
Toggle disabled form submit
You can use the module toggleDisabled
if you want to have the submit button
disabled until the form
is completely filled out.
$.validate({ modules : 'toggleDisabled', disabledFormFilter : 'form.toggle-disabled', showErrorDialogs : false });
Use the property disabledFormFilter
to target specific forms on your page. By
omitting the
property the disabled feature will become enabled on all forms. Use the property
showErrorDialogs
to tell the module whether or not to display error dialogs (defaults to true).
Writing a custom validator
You can use the function $.formUtils.addValidator()
to add your own validation
function. Here's an
example of a validator that checks if the input contains an even number.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-form-validator/2.3.26/jquery.form-validator.min.js"></script> <script> // Add custom validation rule $.formUtils.addValidator({ name : 'even_number', validatorFunction : function(value, $el, config, language, $form) { return parseInt(value, 10) % 2 === 0; }, errorMessage : 'You have to answer with an even number', errorMessageKey: 'badEvenNumber' }); // Setup form validation $.validate(); </script>
Required properties passed into $.formUtils.addValidator
name - The name of the validator, which is used in the validation attribute of the input element.
validatorFunction - Callback function that validates the input. Should return a boolean telling if the value is considered valid or not.
errorMessageKey - Name of language property that is used in case the value of the input is invalid.
errorMessage - An alternative error message that is used if errorMessageKey is left with an empty value or isn't defined in the language object. Note that you also can use inline error messages in your form.
The validation function takes these five arguments:
- value — the value of the input thats being validated
- $el — jQuery object referring to the input element being validated
- config — Object containing the configuration of this form validation
- language — Object with error dialogs
- $form — jQuery object referring to the form element being validated
Creating a custom module
A "module" is basically a javascript file containing one or more calls to
$.formUtils.addValidator()
.
The module file should either have the file extension .js (as an ordinary javascript
file) or .dev.js
Using the file extension .dev.js will tell $.formUtils.loadModules
to
always append a
timestamp to the
end of the URL, so that the browser never caches the file. You should of course never use
.dev.js on a
production website.
Loading your module
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-form-validator/2.3.26/jquery.form-validator.min.js"></script> <script> // Load my custom module $.formUtils.loadModules('mymodule.dev', 'js/validation-modules/'); // Setup validation on all forms $.validate(); </script>
The first argument of $.formUtils.loadModules
is a comma separated string with names
of module
files, without
file extension (add .dev if the file name is for example mymodule.dev.js, this will
ensure you that the
browser never
caches the javascript).
The second argument is the path where the module files are located. This argument is optional, if not given the module files has to be located in the same directory as the core modules shipped together with this jquery plugin.
Credits
Want to contribute? All you have to do is to fork this project on github and do a pull request.
Author / Project Maintainer
Contributors
Additional credits
Scott
Gonzales (URL regexp)
Darren Mason
(Password strength meter)
Donate
You are more than welcome to give a donation. By clicking on the button below you will be re-directed to PayPal where you can specify how much you want to donate and complete a secure transaction.
Ads on formvalidator.net
This website has grown in popularity over the last months. Because of this an ad banner have been introduced to help out with the cost of running the website.
License
This plugin is released under the MIT license.
Search