%PDF- %PDF-
Direktori : /home/lightco1/upgrade.lightco.com.au/libraries/cegcore/assets/gplugins/gvalidation/ |
Current File : /home/lightco1/upgrade.lightco.com.au/libraries/cegcore/assets/gplugins/gvalidation/gvalidation.js |
jQuery.gvalidation = { rules : { required : /[^.*]/, alpha : /^[a-z ._-]+$/i, alphanum : /^[a-z0-9 ._-]+$/i, digit : /^[-+]?[0-9]+$/, nodigit : /^[^0-9]+$/, nospace : /^[^ ]+$/, number : /^[-+]?\d*\.?\d+$/, email : /^([a-zA-Z0-9_\.\-\+%])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/, image : /.(jpg|jpeg|png|gif|bmp)$/i, phone : /^\+{0,1}[0-9 \(\)\.\-]+$/, // alternate regex : /^[\d\s ().-]+$/,/^((\+\d{1,3}(-| )?\(?\d\)?(-| )?\d{1,5})|(\(?\d{2,6}\)?))(-| )?(\d{3,4})(-| )?(\d{4})(( x| ext)\d{1,5}){0,1}$/ phone_inter : /^\+{0,1}[0-9 \(\)\.\-]+$/, url : /^(http|https|ftp)\:\/\/[a-z0-9\-\.]+\.[a-z]{2,3}(:[a-z0-9]*)?\/?([a-z0-9\-\._\?\,\'\/\\\+&%\$#\=~])*$/i }, errors : { required : 'This field is required.', alpha : 'This field accepts alphabetic characters only.', alphanum : 'This field accepts alphanumeric characters only.', digit : 'Please enter a valid integer.', nodigit : 'No digits are accepted.', nospace : 'No spaces are accepted.', number : 'Please enter a valid number.', email : 'Please enter a valid email.', image : 'This field should only contain image types', phone : 'Please enter a valid phone.', phone_inter : 'Please enter a valid international phone number.', url : 'Please enter a valid url.', group: 'Please make at least %1 selection(s).', confirm: 'Please make sure that the value matches the %1 field value.', custom: 'The value entered is not valid.', }, display : 'tooltip', 'css':{ 'background-color':'#ff4242', 'border-color':'#ff0000', 'padding':'4px', }, }; (function($){ $.fn.gvalidate = function(options, params){ if(this.length > 0){ if($.type(params) === 'undefined' && $.type(options) === 'object'){ params = options; } if($.type(options) === 'undefined' || $.type(options) === 'object'){ params = $.extend({}, $.gvalidation, params); return this.each(function(){ if(!$(this).data('gvalidation')){ $(this).data('gvalidation', new GValidation(this, params)); } }); } if($.type(options) === 'string'){ params = $.extend({}, $.gvalidation, params); var gval = $(this).data('gvalidation'); if(typeof gval == 'undefined' || !gval){ return null; } switch (options){ case 'get': return gval.get(); } } } } var GValidation = function(elem, params){ this.element = elem; this.settings = params; this.rules = []; this.errors = {}; this.invalid_rule = ''; this.error_shown = false; this.disabled = false; this.init(); }; GValidation.prototype = { init: function(){ var gval = this; if($(gval.element).is(':input')){ gval.validate(false); //validate the field when some events occur $(gval.element).on('change', function(){ gval.validate(true); }); $(gval.element).on('blur', function(){ gval.validate(true); }); }else{ //check on form submit if($(gval.element).prop('tagName') == 'FORM'){ /*$(gval.element).find(':input').on('blur', function(){ $(this).gvalidate(); }); $(gval.element).find(':input').on('change', function(){ $(this).gvalidate(); });*/ $(gval.element).find(':input').each(function(i, inp){ $(inp).gvalidate(); }); $(gval.element).on('submit', function(e){ //gval.init(); $(gval.element).find(':input').each(function(i, inp){ $(inp).gvalidate(); }); if(gval.validate_area() == true){ $(gval.element).trigger('success.gvalidation'); return true; }else{ e.stopImmediatePropagation(); $(gval.element).trigger('fail.gvalidation'); return false; } }); $(gval.element).on('reset', function(e){ setTimeout(function(){ $(gval.element).find(':input').trigger('change'); }, 500); }); }else{ return gval.validate_area(); } } }, validate_area: function(){ var gval = this; var focus_gval = null; $(gval.element).find(':input').each(function(i, inp){ $(inp).gvalidate(); if(focus_gval == null){ var gval_inp = $(inp).gvalidate('get'); if(!gval_inp.validate()){ focus_gval = gval_inp; return false;//break } } }); if(focus_gval != null){ $(focus_gval.element).focus(); $('html, body').animate({ scrollTop: $(focus_gval.element).offset().top - 100 }, 300); focus_gval.show_error(); return false; } return true; }, get: function(){ var gval = this; return gval; }, reset: function(){ var gval = this; $(gval.element).data('gvalidation', null); }, validate: function(showError){ var gval = this; gval.inspect(); var result = gval.check(); if(result){ if(gval.rule_name(gval.invalid_rule) == 'group'){ $('input[class*="'+gval.invalid_rule+'"]').each(function(i, chk){ var gval_other = $(chk).gvalidate('get'); if(gval_other != null){ gval_other.remove_error(); } }); }else if(gval.rules.length && gval.rule_name(gval.rules[0]) == 'group'){ $('input[class*="'+gval.rules[0]+'"]').each(function(i, chk){ var gval_other = $(chk).gvalidate('get'); if(gval_other != null){ gval_other.remove_error(); } }); }else{ gval.remove_error(); } }else{ if(gval.rule_name(gval.invalid_rule) == 'group'){ $('input[class*="'+gval.invalid_rule+'"]').each(function(i, chk){ var gval_other = $(chk).gvalidate('get'); if(gval_other != null){ gval_other.check(); } }); } if(showError == true){ gval.show_error(); } } return result; }, inspect: function(){ var gval = this; var validate_matches = $(gval.element).prop('class').match(/validate\[(.*?)\]/g); if(validate_matches){ $.each(validate_matches, function(vm, validate_match){ var matches = validate_match.match(/validate\[(.*?)\]/); if(matches && typeof matches[1] != 'undefined'){ var rules = matches[1].split(','); var clean_rules = []; $.each(rules, function(i, rule){ rule = rule.replace(/("|')/g, ''); clean_rules.push(rule); }); gval.set_rules(clean_rules); } }); } }, check: function(){ var gval = this; var toReturn = true; $(gval.element).trigger('check.gvalidation'); $.each(gval.rules, function(i, rule){ if(!gval.check_rule(rule)){ gval.invalid_rule = rule; toReturn = false; return false;//break } }); if(toReturn == false){ $(gval.element).trigger('invalid.gvalidation'); } if(gval.disabled == true){ return true; } if($(gval.element).is(':hidden')){ return true; } return toReturn; }, set_rules: function(rules){ var gval = this; gval.rules = rules; }, check_rule: function(rule){ var gval = this; if($(gval.element).prop('disabled')){ return true; } var $type = $(gval.element).prop('type'); var $rule_parts = rule.split(':'); if($.gvalidation.rules.hasOwnProperty($rule_parts[0])){ if($.inArray($type, ['checkbox','radio']) > -1){ return $(gval.element).prop('checked'); }else{ if($rule_parts[0] == 'required'){ if($(gval.element).val() == null){ return false;//for multi select with nothing selected }else if($.isArray($(gval.element).val())){ if($(gval.element).val().length == 0){ return false;//for multi select }else{ return true; } }else{ return $(gval.element).val().trim().match($.gvalidation.rules[$rule_parts[0]]); } }else{ return (!$(gval.element).val().trim() || $(gval.element).val().trim().match($.gvalidation.rules[$rule_parts[0]])); } } }else{ if($rule_parts[0] == 'group'){ var count = 0; $('input[class*="'+rule+'"]').each(function(i, chk){ if($(chk).prop('checked')){ count = count + 1; } }); var limit = ($rule_parts[2] ? $rule_parts[2] : 1); return (count >= limit); }else if($rule_parts[0] == 'confirm'){ return ($('#'+$rule_parts[1]).val() == $(gval.element).val()); }else if($rule_parts[0] == 'custom'){ var fn = $rule_parts[1]; if(fn in window){ return window[fn]($(gval.element)); } return true; } } }, show_error: function(){ var gval = this; if(!gval.invalid_rule){ return; } var $rule_parts = gval.invalid_rule.split(':'); rule = $rule_parts[0]; if(typeof gval.errors[rule] == 'undefined'){ if($(gval.element).prop('title')){ gval.errors[rule] = $(gval.element).prop('title'); }else{ var error_string = $.gvalidation.errors[rule]; if(rule == "group"){ var skip = false; $('input[class*="'+gval.invalid_rule+'"]').each(function(i, chk){ var gval_other = $(chk).gvalidate('get'); var another_error_shown = (gval_other == null ? false : gval_other.error_shown); if(another_error_shown !== false){ skip = true; return false; } }); if(skip){ return; } } if(rule == "group"){ if(typeof $rule_parts[2] == 'undefined'){ //dirty fix for the group validtaions $rule_parts[1] = 1; } } $.each($rule_parts, function(i, val){ error_string = error_string.replace('%'+i, val); }); gval.errors[rule] = error_string; } } gval.display_error(); gval.error_shown = true; }, display_error: function(){ var gval = this; $(gval.element).trigger('display.gvalidation'); var error_target = $(gval.element); if($(gval.element).data('gvalidation-target')){ var error_target = $(gval.element).data('gvalidation-target'); } if($.gvalidation.display == 'tooltip'){ error_target.data('content', '<span class="gvalidation-error-text">'+gval.errors[gval.rule_name(gval.invalid_rule)]+'</span>'); error_target.gtooltip({'tipclass':'gtooltip gvalidation-error-tip', 'closable': 1, 'tid':'gval', 'trigger':'manual', 'css':gval.settings.css}); error_target.gtooltip('reset', {'tid':'gval'}); error_target.gtooltip('show', {'tid':'gval'}); }else{ //$(gval.element).parent().after($($(gval.element).data('content')).css('display', 'block')); } }, remove_error: function(){ var gval = this; if(!gval.invalid_rule){ return; } gval.errors = {}; gval.error_shown = false; gval.invalid_rule = ''; if($.gvalidation.display == 'tooltip'){ $(gval.element).gtooltip('destroy', {'tid':'gval'}); }else{ } }, disable: function(){ var gval = this; gval.disabled = true; }, enable: function(){ var gval = this; gval.disabled = false; }, rule_name: function(rule){ var $rule_parts = rule.split(':'); return $rule_parts[0]; }, rule_params: function(rule){ var $rule_parts = rule.split(':'); $rule_parts.splice(0, 1); return $rule_parts; }, }; }(jQuery));