Form Validation & AJAX Submit Plugin - jQuery NiceForm
| File Size: | 1.32 MB |
|---|---|
| Views Total: | 7459 |
| Last Update: | |
| Publish Date: | |
| Official Website: | Go to website |
| License: | MIT |
NiceForm is a robust and customizable jQuery plugin which can be used to validate a various type of form fields and send the form data to server side via AJAX requests.
More features:
- 10+ built in validation rules.
- Custom error messages.
- Useful methods and callbacks.
Basic usage:
1. Download and load the NiceForm's script jquery.niceform.js after jQuery.
<script src="/path/to/jquery.min.js"></script> <script src="/path/to/jquery.niceform.js"></script>
2. Load the Moment.js to validate dates & times (OPTIONAL).
<script src="/path/to/moment.min.js"></script>
3. Add validation rules to form fields using the following CSS helpers:
- .required: required field
- .date: checks if the field matches the date format
- .time: checks if the field matches the time format
- .datetime: checks if the field matches the datetime format
- .email: checks if is an valid email
- .number: checks if is a number
- .url: checks if is a valid URL
- .password: checks if is a valid password
- .repassword: checks if the field matches the password
- .regex: checks if the field matches the data-regex attribute
- .simple: checks if the field matches the SIMPLE regex defined in the JavaScript
- .really-simple: checks if the field matches Really-SIMPLE regex defined in the JavaScript
<form action="." id="myForm"> <input type="text" name="username" id="username" class="really-simple"> <input type="password" name="password" id="password" class="password"> <input type="password" name="repassword" id="repassword" class="repassword"> </form>
4. Attach the plugin to the HTML form.
$('#myForm').niceform({
// options here
});
5. All possible options to config the plugin.
$('#myForm').niceform({
// enables ajax form submit
postFormEnabled: true,
// url to post form data
postUrl: null,
// ajax options
ajax: { type: 'POST', dataType: 'JSON' },
// options for the password validator
password: {
// Minimum length for password field
min: 6,
// Maximum length for password field
max: 32,
// Number of required special character for password field
specialLength: 1,
// Number of required uppercase letter for password field
uppercaseLength: 1,
// Number of required number for password field
numberLength: 1
},
// options for the Regex validator
regex: {
// Regular expression for ".email" field
email: /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$/,
// Regular expression for ".url" field
url: /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/,
// Regular expression for ".simple" field
simple: /^[a-zA-Z0-9]+(?:[-_\s][a-zA-Z0-9]+)*$/,
// Regular expression for ".really-simple" field
reallySimple: /^[a-zA-Z0-9]+$/
},
// the duration of the animation
animationDuration: 200,
// localization
locale: {
// The format of ".date" field
date: 'DD/MM/YYYY',
// The format of ".time" field
time: 'HH:mm',
// The format of ".datetime" field
datetime: 'DD/MM/YYYY HH:mm',
// Title of success message when submitting form successfully
successTitle: 'Success!',
// Content of success message when submitting form successfully
successMessage: 'The form has been successfully submitted',
// Title of error message when form is invalid or error in submitting form
errorTitle: 'Error!',
// Content of error message when form is invalid
invalidErrorMessage: 'Please correct your invalid fields!',
// Error message for ".required" field
requiredErrorMessage: 'This field is required',
// Error message for ".date" field
dateErrorMessage: 'Please check the format of your date, it should be like 14/02/2000',
// Error message for ".time" field
timeErrorMessage: 'Please check the format of your time, it should be like 14:02',
// Error message for ".datetime" field
datetimeErrorMessage: 'Please check the format of your date time, it should be like 14/02/2000 14:02',
// Error message for ".email" field
emailErrorMessage: 'Please check the format of your email address, it should read like [email protected]',
// Error message for ".number" field
numberErrorMessage: 'Please enter only numbers',
// Error message for ".url" field
urlErrorMessage: 'Please enter valid website address',
// Error message for ".password" field
passwordErrorMessage: 'Your password must be at least 6 characters and it must contain numbers, letters (lowercase and uppercase) and at least 1 special character',
// Error message for ".repassword" field
repasswordErrorMessage: 'Please confirm your password',
// Error message for ".simple" field
simpleErrorMessage: 'Please enter only letters, numbers and only 1 underscore or dash or space between letters and numbers',
// Error message for ".really-simple" field
reallySimpleErrorMessage: 'Please enter only letters and numbers, no punctuation, dots, etc',
// Error message when unknown issue occurs
unknownErrorMessage: 'Sorry, an error occurred attempting to submit the form. Please contact the site administrator to resolve!',
},
// used to create your own form validators
// Params: form and options
validate: null,
// used to show error states when your form is invalid.
// Params: form, errorFields and options
showError: {
form.niceform('showErrorMessage', options.locale.invalidErrorMessage);
errorFields.forEach(function (field) {
showErrorField(form, field, field.attr('data-error-message'));
});
},
// used to hide error states before validating the form
hideError: {
form.find('.has-error').removeClass('has-error');
form.find('.is-invalid').removeClass('is-invalid').attr('data-error-message', '');
form.niceform('hideElement', form.find('.nf-error-message'));
form.niceform('hideMessage');
},
// used process ajax response from server
// Params: resp, form, and options.
// Return: Boolean
processAjaxResponse: null
});
6. Callback functions.
$('#myForm').niceform({
onValid: function(form, options){
// do something
},
onInvalid: function(form, options){
// do something
},
onBeforeValidate: function(form, options){
// do something
},
onBeforeSerializeForm: function(form, options){
// do something
},
onBeforePostForm: function(form, options){
// do something
},
onAjaxSuccess: function(resp, form, options){
// do something
},
onAjaxError: function(jqXhr, form, options){
// do something
}
});
7. API methods.
var instance = $('#myForm').niceform();
// enables the form
instance.enableForm();
// disables the form
instance.disableForm();
// clears the value from a specific form field
instance.clearValue(controlSelector);
// type: success, info, warning, error or danger
instance.showMessage(type, title, message);
// Shortcuts
instance.showSuccessMessage(message);
instance.showErrorMessage(message);
// hides the error message
instance.hideMessage();
// gets options
instance.getOptions();
// shows/hides element
instance.showElement($element);
instance.hideElement($element);
8. You can also customize the error message for each form field using data-RULE-message attributes.
<input type="text" class="required email" name="email" data-required-message="Email address is mandatory!" data-email-message="Email address is invalid!" />
Changelog:
v1.1.9 (2020-09-22)
- Use new API for checking URL
v1.1.8 (2020-09-11)
- Support select2
v1.1.7 (2020-08-21)
- Support "onBeforeValidate" callback
v1.1.6 (2020-07-12)
- Bugfix
v1.1.3 (2020-05-07)
- Update trigger
v1.1.0 (2020-03-17)
- Update
v1.0.9 (2020-03-13)
- You can config locale as string or object now
v1.0.6 (2019-10-16)
- Show error messages for .input-group and .form-group.has-feedback
v1.0.5 (2019-05-23)
- Fix issue alert message when ajax is error or success
v1.0.4 (2019-05-03)
- Fix issue related to jquery external
This awesome jQuery plugin is developed by ducdhm. For more Advanced Usages, please check the demo page or visit the official website.











