1/** Some basic methods to validate form elements */ 2var mpValidateEmail = function (email) { 3 //In case the email is not entered yet and is not required 4 if(!email || 0 === email.length) { 5 return true; 6 } 7 8 // https://stackoverflow.com/a/46181/6114835 9 // var re = /^(([^<>()[\]\\.,;:\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,}))$/; 10 var re = /^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i; //Accepts unicode??? 11 return re.test(email); 12 13 //OLD, but doesn't work super well 14 // var filter = /^[A-Z0-9._'%+-]+@[A-Z0-9.-]+\.[A-Z]{2,25}$/i; 15 // return filter.test(email); 16}; 17 18var mpValidateUrl = function(url) { 19 var re = /(https?:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#()?&//=]*)/; 20 return re.test(url); 21}; 22 23var mpValidateNotBlank = function(val) { 24 var str = val.trim(); 25 return (str && str.length > 0); 26}; 27 28var mpValidateFieldNotBlank = function($field) { 29 var notBlank = true; 30 31 if(!$field.is(':visible')) { 32 // Pass validation on fields that are not visible 33 } 34 else if ($field.is('input') || $field.is('select') && !$field.hasClass('mepr-multi-select-field') || $field.is('textarea')) { 35 notBlank = mpValidateNotBlank($field.val()); 36 } 37 else if ($field.hasClass('mepr-checkbox-field')) { 38 notBlank = $field.find('input').is(':checked'); 39 } 40 else if ($field.hasClass('mepr-radios-field') || $field.hasClass('mepr-checkboxes-field') || $field.hasClass('mepr-multi-select-field')) { 41 var input_vals = []; 42 var selector = $field.hasClass('mepr-multi-select-field') ? 'option:selected' : 'input:checked'; 43 44 $field.find(selector).each(function (i, obj) { 45 input_vals.push(true); 46 }); 47 48 notBlank = input_vals.length > 0; 49 } 50 51 return notBlank; 52}; 53 54var mpToggleFieldValidation = function(field, valid) { 55 field.toggleClass('invalid', !valid); 56 field.toggleClass('valid', valid); 57 58 if(field.hasClass('mepr-password-confirm') || field.hasClass('mepr-password')) { 59 field.parent().prev('.mp-form-label').find('.cc-error').toggle(!valid); 60 } else { 61 field.prev('.mp-form-label').find('.cc-error').toggle(!valid); 62 } 63 64 if(field.hasClass('mepr-coupon-code') && valid) { 65 field.prev('.mp-form-label').find('.cc-success').toggle(valid); 66 setTimeout(function() { 67 field.prev('.mp-form-label').find('.cc-success').toggle(!valid); 68 field.removeClass('valid'); 69 }, 2000); 70 } 71 72 if(field.hasClass('mepr-countries-dropdown')) { 73 field.closest('.mepr-form').find('.mepr_mepr-address-state .cc-error').toggle(!valid); 74 } 75 76 field.triggerHandler('mepr-validate-field', valid); 77 var form = field.closest('.mepr-form'); 78 79 if (0 < form.find('.invalid').length) { 80 // Toggle CSS directly so we can ensure 'block' display 81 form.find('.mepr-form-has-errors').css('display','block'); 82 } else { 83 form.find('.mepr-form-has-errors').css('display','none'); 84 } 85};
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.