XH_Digital_Management/static/js/pages/form-validation.js

103 lines
3.3 KiB
JavaScript

'use strict';
$(document).ready(function() {
$(function() {
// [ Add phone validator ]
$.validator.addMethod(
'phone_format',
function(value, element) {
return this.optional(element) || /^\(\d{3}\)[ ]\d{3}\-\d{4}$/.test(value);
},
'Invalid phone number.'
);
// [ Initialize validation ]
$('#validation-form123').validate({
ignore: '.ignore, .select2-input',
focusInvalid: false,
rules: {
'validation-email': {
required: true,
email: true
},
'validation-password': {
required: true,
minlength: 6,
maxlength: 20
},
'validation-password-confirmation': {
required: true,
minlength: 6,
equalTo: 'input[name="validation-password"]'
},
'validation-required': {
required: true
},
'validation-url': {
required: true,
url: true
},
'validation-phone': {
required: true,
phone_format: true
},
'validation-select': {
required: true
},
'validation-bs-tagsinput': {
required: true
},
'validation-text': {
required: true
},
'validation-file': {
required: true
},
'validation-switcher': {
required: true
},
'validation-radios': {
required: true
},
'validation-radios-custom': {
required: true
},
'validation-checkbox': {
required: true
},
'validation-checkbox-custom': {
required: true
},
},
// Errors //
errorPlacement: function errorPlacement(error, element) {
var $parent = $(element).parents('.form-group');
// Do not duplicate errors
if ($parent.find('.jquery-validation-error').length) {
return;
}
$parent.append(
error.addClass('jquery-validation-error small form-text invalid-feedback')
);
},
highlight: function(element) {
var $el = $(element);
var $parent = $el.parents('.form-group');
$el.addClass('is-invalid');
// Select2 and Tagsinput
if ($el.hasClass('select2-hidden-accessible') || $el.attr('data-role') === 'tagsinput') {
$el.parent().addClass('is-invalid');
}
},
unhighlight: function(element) {
$(element).parents('.form-group').find('.is-invalid').removeClass('is-invalid');
}
});
});
});