first commit
This commit is contained in:
@@ -0,0 +1,264 @@
|
||||
/* ------------------------------------------------------------------------------
|
||||
*
|
||||
* # Form validation
|
||||
*
|
||||
* Demo JS code for form_validation.html page
|
||||
*
|
||||
* ---------------------------------------------------------------------------- */
|
||||
|
||||
|
||||
// Setup module
|
||||
// ------------------------------
|
||||
|
||||
var FormValidation = function() {
|
||||
|
||||
|
||||
//
|
||||
// Setup module components
|
||||
//
|
||||
|
||||
// Uniform
|
||||
var _componentUniform = function() {
|
||||
if (!$().uniform) {
|
||||
console.warn('Warning - uniform.min.js is not loaded.');
|
||||
return;
|
||||
}
|
||||
|
||||
// Initialize
|
||||
$('.form-input-styled').uniform({
|
||||
fileButtonClass: 'action btn bg-blue'
|
||||
});
|
||||
};
|
||||
|
||||
// Switchery
|
||||
var _componentSwitchery = function() {
|
||||
if (typeof Switchery == 'undefined') {
|
||||
console.warn('Warning - switchery.min.js is not loaded.');
|
||||
return;
|
||||
}
|
||||
|
||||
// Initialize single switch
|
||||
var elems = Array.prototype.slice.call(document.querySelectorAll('.form-input-switchery'));
|
||||
elems.forEach(function(html) {
|
||||
var switchery = new Switchery(html);
|
||||
});
|
||||
};
|
||||
|
||||
// Bootstrap switch
|
||||
var _componentBootstrapSwitch = function() {
|
||||
if (!$().bootstrapSwitch) {
|
||||
console.warn('Warning - bootstrap_switch.min.js is not loaded.');
|
||||
return;
|
||||
}
|
||||
|
||||
// Initialize
|
||||
$('.form-input-switch').bootstrapSwitch({
|
||||
onSwitchChange: function(state) {
|
||||
if(state) {
|
||||
$(this).valid(true);
|
||||
}
|
||||
else {
|
||||
$(this).valid(false);
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
// Touchspin
|
||||
var _componentTouchspin = function() {
|
||||
if (!$().TouchSpin) {
|
||||
console.warn('Warning - touchspin.min.js is not loaded.');
|
||||
return;
|
||||
}
|
||||
|
||||
// Define variables
|
||||
var $touchspinContainer = $('.touchspin-postfix');
|
||||
|
||||
// Initialize
|
||||
$touchspinContainer.TouchSpin({
|
||||
min: 0,
|
||||
max: 100,
|
||||
step: 0.1,
|
||||
decimals: 2,
|
||||
postfix: '%'
|
||||
});
|
||||
|
||||
// Trigger value change when +/- buttons are clicked
|
||||
$touchspinContainer.on('touchspin.on.startspin', function() {
|
||||
$(this).trigger('blur');
|
||||
});
|
||||
};
|
||||
|
||||
// Select2 select
|
||||
var _componentSelect2 = function() {
|
||||
if (!$().select2) {
|
||||
console.warn('Warning - select2.min.js is not loaded.');
|
||||
return;
|
||||
}
|
||||
|
||||
// Initialize
|
||||
var $select = $('.form-control-select2').select2({
|
||||
minimumResultsForSearch: Infinity
|
||||
});
|
||||
|
||||
// Trigger value change when selection is made
|
||||
$select.on('change', function() {
|
||||
$(this).trigger('blur');
|
||||
});
|
||||
};
|
||||
|
||||
// Validation config
|
||||
var _componentValidation = function() {
|
||||
if (!$().validate) {
|
||||
console.warn('Warning - validate.min.js is not loaded.');
|
||||
return;
|
||||
}
|
||||
|
||||
// Initialize
|
||||
var validator = $('.form-validate-jquery').validate({
|
||||
ignore: 'input[type=hidden], .select2-search__field', // ignore hidden fields
|
||||
errorClass: 'validation-invalid-label',
|
||||
successClass: 'validation-valid-label',
|
||||
validClass: 'validation-valid-label',
|
||||
highlight: function(element, errorClass) {
|
||||
$(element).removeClass(errorClass);
|
||||
},
|
||||
unhighlight: function(element, errorClass) {
|
||||
$(element).removeClass(errorClass);
|
||||
},
|
||||
success: function(label) {
|
||||
label.addClass('validation-valid-label').text('Success.'); // remove to hide Success message
|
||||
},
|
||||
|
||||
// Different components require proper error label placement
|
||||
errorPlacement: function(error, element) {
|
||||
|
||||
// Unstyled checkboxes, radios
|
||||
if (element.parents().hasClass('form-check')) {
|
||||
error.appendTo( element.parents('.form-check').parent() );
|
||||
}
|
||||
|
||||
// Input with icons and Select2
|
||||
else if (element.parents().hasClass('form-group-feedback') || element.hasClass('select2-hidden-accessible')) {
|
||||
error.appendTo( element.parent() );
|
||||
}
|
||||
|
||||
// Input group, styled file input
|
||||
else if (element.parent().is('.uniform-uploader, .uniform-select') || element.parents().hasClass('input-group')) {
|
||||
error.appendTo( element.parent().parent() );
|
||||
}
|
||||
|
||||
// Other elements
|
||||
else {
|
||||
error.insertAfter(element);
|
||||
}
|
||||
},
|
||||
rules: {
|
||||
password: {
|
||||
minlength: 5
|
||||
},
|
||||
repeat_password: {
|
||||
equalTo: '#password'
|
||||
},
|
||||
email: {
|
||||
email: true
|
||||
},
|
||||
repeat_email: {
|
||||
equalTo: '#email'
|
||||
},
|
||||
minimum_characters: {
|
||||
minlength: 10
|
||||
},
|
||||
maximum_characters: {
|
||||
maxlength: 10
|
||||
},
|
||||
minimum_number: {
|
||||
min: 10
|
||||
},
|
||||
maximum_number: {
|
||||
max: 10
|
||||
},
|
||||
number_range: {
|
||||
range: [10, 20]
|
||||
},
|
||||
url: {
|
||||
url: true
|
||||
},
|
||||
date: {
|
||||
date: true
|
||||
},
|
||||
date_iso: {
|
||||
dateISO: true
|
||||
},
|
||||
numbers: {
|
||||
number: true
|
||||
},
|
||||
digits: {
|
||||
digits: true
|
||||
},
|
||||
creditcard: {
|
||||
creditcard: true
|
||||
},
|
||||
basic_checkbox: {
|
||||
minlength: 2
|
||||
},
|
||||
styled_checkbox: {
|
||||
minlength: 2
|
||||
},
|
||||
switchery_group: {
|
||||
minlength: 2
|
||||
},
|
||||
switch_group: {
|
||||
minlength: 2
|
||||
}
|
||||
},
|
||||
messages: {
|
||||
custom: {
|
||||
required: 'This is a custom error message'
|
||||
},
|
||||
basic_checkbox: {
|
||||
minlength: 'Please select at least {0} checkboxes'
|
||||
},
|
||||
styled_checkbox: {
|
||||
minlength: 'Please select at least {0} checkboxes'
|
||||
},
|
||||
switchery_group: {
|
||||
minlength: 'Please select at least {0} switches'
|
||||
},
|
||||
switch_group: {
|
||||
minlength: 'Please select at least {0} switches'
|
||||
},
|
||||
agree: 'Please accept our policy'
|
||||
}
|
||||
});
|
||||
|
||||
// Reset form
|
||||
$('#reset').on('click', function() {
|
||||
validator.resetForm();
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// Return objects assigned to module
|
||||
//
|
||||
|
||||
return {
|
||||
init: function() {
|
||||
_componentUniform();
|
||||
_componentSwitchery();
|
||||
_componentBootstrapSwitch();
|
||||
_componentTouchspin();
|
||||
_componentSelect2();
|
||||
_componentValidation();
|
||||
}
|
||||
}
|
||||
}();
|
||||
|
||||
|
||||
// Initialize module
|
||||
// ------------------------------
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
FormValidation.init();
|
||||
});
|
||||
Reference in New Issue
Block a user