File: /home/xedaptot/ai.naniguide.com/public/core/js/validate.js
/* ------------------------------------------------------------------------------
*
* # Form validation
*
* Specific JS code additions for form_validation.html page
*
* Version: 1.1
* Latest update: Oct 20, 2015
*
* ---------------------------------------------------------------------------- */
function customValidate(selector) {
selector.validate({
ignore: 'input[type=hidden], .select2-input, :not(:visible)', // ignore hidden fields
errorClass: 'validation-error-label',
successClass: 'validation-valid-label',
highlight: function(element, errorClass) {
$(element).removeClass(errorClass);
},
unhighlight: function(element, errorClass) {
$(element).removeClass(errorClass);
},
// Different components require proper error label placement
errorPlacement: function(error, element) {
// Styled checkboxes, radios, bootstrap switch
if (element.parents('div').hasClass("checker") || element.parents('div').hasClass("choice") || element.parent().hasClass('bootstrap-switch-container') ) {
if(element.parents('label').hasClass('checkbox-inline') || element.parents('label').hasClass('radio-inline')) {
error.appendTo( element.parent().parent().parent().parent() );
}
else {
error.appendTo( element.parent().parent().parent().parent().parent() );
}
}
// Select2
else if (element.parents(".form-group").find('.input_help').length) {
error.insertAfter( element.parents(".form-group").find('.input_help') );
}
// Unstyled checkboxes, radios
else if (element.parents('div').hasClass('checkbox') || element.parents('div').hasClass('radio')) {
error.appendTo( element.parent().parent().parent() );
}
// Input with icons
else if (element.parents('div').hasClass('has-feedback')) {
error.appendTo( element.parent() );
}
// Inline checkboxes, radios
else if (element.parents('label').hasClass('checkbox-inline') || element.parents('label').hasClass('radio-inline')) {
error.appendTo( element.parent().parent() );
}
// Select2
else if (element.parents(".form-group").find('.select2').length) {
error.insertAfter( element.parents(".form-group").find('.select2') );
}
//// Select2
//else if (element.is("textarea")) {
// error.insertBefore( element.parents(".form-group") );
//}
// Input group, styled file input
else if (element.parent().hasClass('uploader') || element.parents().hasClass('input-group')) {
error.appendTo( element.parent().parent() );
}
else {
error.insertAfter(element);
}
// Add error class to form group
element.parents(".form-group").addClass('has-error');
},
validClass: "validation-valid-label",
success: function(label) {
label.addClass("validation-valid-label").text("Success.");
label.parents(".form-group").removeClass('has-error');
},
rules: {
vali: "required",
repeat_password: {
equalTo: "#password"
},
password_confirmation: {
equalTo: "#password"
},
email: {
email: true
},
repeat_email: {
equalTo: "#email"
},
email_confirmation: {
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
},
card: {
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",
},
agree: "Please accept our policy"
}
});
}