1// Netrix Form Validate for Netrix Form Class 2$.fn.nxValidate = function() { 3 var thisObj = {}; 4 var debug = false; 5 6 thisObj.error = false; 7 thisObj.errorMessage = ''; 8 thisObj.valid = true; 9 thisObj.first_error = undefined; 10 thisObj.form = this; 11 12 thisObj.tooltipHTML = '<div class="tooltip">##TEXT##<div class="arrow"></div></div>'; 13 thisObj.tooltipClasses = { 14 accept : 'sugo', 15 error : 'error error-message', 16 warning : 'warning' 17 }; 18 19 thisObj.pushTooltip = function(element,text,type){ 20 //ha nincs megadva jQuery element akkor vége 21 if(!element) return false; 22 23 //ha nincs szöveg akkor nem is kell 24 if(!text) return false; 25 26 //ha nincs beállÃtva type, akkor alapértelmezetten accept 27 type = type.toString().toLowerCase(); 28 if( type != 'accept' && type != 'warning' && type != 'error' ) type = 'accept'; 29 30 var tooltipDiv = $(thisObj.tooltipHTML).html(function(i,e){ 31 return e.replace("##TEXT##",text.toString()); 32 }).addClass(thisObj.tooltipClasses[type]); 33 34 element.next('.tooltip').remove(); 35 element.after(tooltipDiv.fadeIn()); 36 }; 37 38 thisObj.elementValidation = function(element) { 39 40 41 thisObj.error = false; 42 43 if($(element).attr('data-skipValidation')){ 44 return thisObj.error; 45 } 46 47 // tÃpusonként egyedi vizsgálat 48 var elementType = $(element).prop( 'tagName' ) + ( $(element).attr( 'type' ) == undefined ? '' : '[' + $(element).attr( 'type' ) + ']' ); 49 var validationDescriptor = $(element).attr('data-validation'); 50 if(typeof validationDescriptor == 'string') { 51 try { 52 validationDescriptor = JSON.parse(validationDescriptor); 53 } catch (error) { 54 validationDescriptor = {}; 55 } 56 } 57 58 var val = $(element).val(); 59 if( val === null ) val = ''; 60 61 if(validationDescriptor) { 62 switch ( elementType ) { 63 64 case 'INPUT[text]': 65 case 'INPUT[number]': 66 case 'INPUT[email]': 67 case 'INPUT[password]': 68 case 'TEXTAREA': 69 case 'SELECT': 70 if ( validationDescriptor.required && thisObj.isEmpty(val) ) 71 { 72 thisObj.error = true; 73 thisObj.errorMessage = validationDescriptor.required.error_message; 74 } 75 if (!thisObj.error && validationDescriptor.rule && val.match(new RegExp(validationDescriptor.rule.pattern)) == null ) 76 { 77 thisObj.error = true; 78 thisObj.errorMessage = validationDescriptor.rule.error_message; 79 } 80 if (!thisObj.error && validationDescriptor.not && val.match(new RegExp(validationDescriptor.not)) ) 81 { 82 thisObj.error = true; 83 thisObj.errorMessage = validationDescriptor.not.error_message; 84 } 85 if (!thisObj.error && validationDescriptor.equal && val != ($('*[name=' + validationDescriptor.equal.name + ']').val()) ) 86 { 87 thisObj.error = true; 88 thisObj.errorMessage = validationDescriptor.equal.error_message; 89 } 90 if (!thisObj.error && validationDescriptor.less_than && validationDescriptor.less_than.value && val > validationDescriptor.less_than.value ) 91 { 92 thisObj.error = true; 93 thisObj.errorMessage = validationDescriptor.less_than.error_message; 94 } 95 if (!thisObj.error && validationDescriptor.greater_than && validationDescriptor.greater_than.value && val < validationDescriptor.greater_than.value ) 96 { 97 thisObj.error = true; 98 thisObj.errorMessage = validationDescriptor.greater_than.error_message; 99 } 100 if (!thisObj.error && validationDescriptor.numeric && !$.isNumeric(val) ) 101 { 102 thisObj.error = true; 103 thisObj.errorMessage = validationDescriptor.numeric.error_message; 104 } 105 try{ 106 //if ( validationDescriptor.valid_email && val.match(new RegExp(/^[_a-z0-9-\+]+(\.[_a-z0-9-\+]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/, 'i')) == null ) 107 if (!thisObj.error && validationDescriptor.valid_email && !thisObj.isValidEmail(val)) 108 { 109 thisObj.error = true; 110 thisObj.errorMessage = validationDescriptor.valid_email.error_message; 111 } 112 }catch(e){} 113 114 if(validationDescriptor.callback){ 115 var callback = null; 116 eval("callback = " + validationDescriptor.callback); 117 118 if(typeof callback == "function"){ 119 thisObj.error = !callback(val); 120 } 121 } 122 123 break; 124 125 case 'INPUT[checkbox]': 126 if ( validationDescriptor.required && !$('input[name*="' + $(element).attr('name').replace(/\[.*?\]/g,"") + '"]').is( ":checked" ) ) 127 { 128 thisObj.error = true; 129 thisObj.errorMessage = validationDescriptor.required.error_message; 130 } 131 break; 132 133 case 'INPUT[radio]': 134 if ( validationDescriptor.required && !$('input[name="' + $(element).attr('name') + '"]').is( ":checked" ) ) 135 { 136 thisObj.error = true; 137 thisObj.errorMessage = validationDescriptor.required.error_message; 138 } 139 break; 140 141 } 142 } 143 144 if ( thisObj.error ) { 145 if(element.parents('.input-group').length>0) { 146 element.parents('.input-group').find('input').addClass('error'); 147 element.nextAll('.error-message.tooltip').eq(0) 148 .removeClass('disabled') 149 .addClass('show') 150 .html(thisObj.errorMessage); 151 } else { 152 element.addClass('error'); 153 element.nextAll('.error-message.tooltip').eq(0) 154 .removeClass('disabled') 155 .addClass('show') 156 .html(thisObj.errorMessage); 157 } 158 159 if(element.parents('form').find('.form-error-dialog').length>0) { 160 element.parents('form').find('.form-error-dialog').removeClass('disabled').addClass('show'); 161 162 element.parents('form').find('.form-error-dialog').each(function() { 163 if($(this).find('.message_'+element.attr('id')).length>0) { 164 $(this).find('.message_'+element.attr('id')).html(thisObj.errorMessage); 165 } else { 166 $(this).append('<a href="#'+element.attr('id')+'" class="message_'+element.attr('id')+'" style="order: '+$(element).index('.form-control')+';">'+thisObj.errorMessage+'</a>'); 167 } 168 });
169 } 170 } else { 171 if(element.parents('.input-group').length>0) { 172 element.parents('.input-group').find('input').removeClass('error'); 173 element.nextAll('.error-message.tooltip').eq(0) 174 .addClass('disabled') 175 .removeClass('show'); 176 } else { 177 element.removeClass('error'); 178 element.nextAll('.error-message.tooltip').eq(0) 179 .addClass('disabled') 180 .removeClass('show'); 181 } 182 183 if(element.parents('form').find('.form-error-dialog').length>0) { 184 185 element.parents('form').find('.form-error-dialog').each(function() { 186 if($(this).find('.message_'+element.attr('id')).length>0) { 187 $(this).find('.message_'+element.attr('id')).remove(); 188 } 189 190 if($(this).html().trim()=="") { 191 $(this).removeClass('show').addClass('disabled'); 192 } 193 }); 194 } 195 } 196 197 return thisObj.error; 198 } 199 200 thisObj.formValidation = function() { 201 202 // ha van form 203 if ( $(thisObj.form).length > 0 ) { 204 205 thisObj.valid = true; 206 thisObj.first_error = ''; 207 208 // elÅször mindenhonnan leszedjük a tooltipeket a formon belül 209 //$(thisObj.form).find('.error-message').addClass('disabled').removeClass('show'); 210 //$(thisObj.form).find('.error').removeClass('error'); 211 212 // megkeressük az ellenÅrizni kÃvánt elemeket 213 $(thisObj.form).find( 214 'input[type="text"], ' + 215 'input[type="number"], ' + 216 'input[type="password"], ' + 217 'input[type="checkbox"], ' + 218 'input[type="radio"], ' + 219 'textarea, ' + 220 'select' 221 ).each(function(index, element) { 222 223 if($(element).attr('data-skipValidation')) return; 224 // ha van a validáslás során hiba, akkor tooltip fel 225 if (thisObj.elementValidation( $(this) ) ) { 226 // visszatérési értéket átállÃtjuk falsra 227 thisObj.valid = false; 228 } 229 }); 230 231 // scroll az elsÅ hibás elemhez 232 //if ( !thisObj.valid ) 233 // $('html,body').animate({ scrollTop: $(thisObj.form).find('.error-message:not(.disabled):first').offset().top - 150 }, 200); 234 235 thisObj.form.data('valid', thisObj.valid); 236 237 238 return debug 239 ? false 240 : thisObj.valid; 241 } 242 } 243 244 thisObj.isValidEmail = function(data) 245 { 246 return data.match(new RegExp(/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/i)) != null; 247 } 248 249 250 thisObj.isEmpty = function(data) 251 { 252 if(typeof(data) == 'number') 253 { 254 return data == 0; 255 } 256 if(typeof(data) == 'boolean') 257 { 258 return !data; 259 } 260 if(typeof(data) == 'string') 261 { 262 if(data == '' || data == '0' || data == ' ') return true; 263 else return false; 264 } 265 if(typeof(data) == 'undefined' || data === null) 266 { 267 return true; 268 } 269 if(typeof(data.length) != 'undefined') 270 { 271 return data.length == 0; 272 } 273 var count = 0; 274 for(var i in data) 275 { 276 if(data.hasOwnProperty(i)) 277 { 278 count ++; 279 } 280 } 281 return count == 0; 282 } 283 284 $(thisObj.form).on('submit ajaxsubmit', function() { 285 return thisObj.formValidation(); 286 }); 287 288 $(thisObj.form).on('blur', 'input[type="text"], input[type="number"], input[type="email"], input[type="password"], textarea', function() { 289 thisObj.elementValidation( $(this) ); 290 }); 291 292 $(thisObj.form).on('change', 'input[type="checkbox"], input[type="radio"], select, input.hasDatepicker', function() { 293 thisObj.elementValidation( $(this) ); 294 }); 295 296 return thisObj; 297}; 298 299window.nxValidate = $.fn.nxValidate; 300 301var nxValidations = []; 302 303$(document).ready(function() { 304 if ( $('form').length ) { 305 $('form').each(function() { 306 var form = $(this); 307 308 if(form.attr('data-validate-when-ready') != 'false') { 309 nxValidations[form.attr("id")] = form.nxValidate(); 310 } 311 }); 312 } 313 314});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.