1jQuery(document).ready(function($) { 2 "use strict"; 3 4 //Contact 5 $('form.php-email-form').submit(function() { 6 7 var f = $(this).find('.form-group'), 8 ferror = false, 9 emailExp = /^[^\s()<>@,;:\/]+@\w[\w\.-]+\.[a-z]{2,}$/i; 10 11 f.children('input').each(function() { // run all inputs 12 13 var i = $(this); // current input 14 var rule = i.attr('data-rule'); 15 16 if (rule !== undefined) { 17 var ierror = false; // error flag for current input 18 var pos = rule.indexOf(':', 0); 19 if (pos >= 0) { 20 var exp = rule.substr(pos + 1, rule.length); 21 rule = rule.substr(0, pos); 22 } else { 23 rule = rule.substr(pos + 1, rule.length); 24 } 25 26 switch (rule) { 27 case 'required': 28 if (i.val() === '') { 29 ferror = ierror = true; 30 } 31 break; 32 33 case 'minlen': 34 if (i.val().length < parseInt(exp)) { 35 ferror = ierror = true; 36 } 37 break; 38 39 case 'email': 40 if (!emailExp.test(i.val())) { 41 ferror = ierror = true; 42 } 43 break; 44 45 case 'checked': 46 if (! i.is(':checked')) { 47 ferror = ierror = true; 48 } 49 break; 50 51 case 'regexp': 52 exp = new RegExp(exp); 53 if (!exp.test(i.val())) { 54 ferror = ierror = true; 55 } 56 break; 57 } 58 i.next('.validate').html((ierror ? (i.attr('data-msg') !== undefined ? i.attr('data-msg') : 'wrong Input') : '')).show('blind'); 59 } 60 }); 61 f.children('textarea').each(function() { // run all inputs 62 63 var i = $(this); // current input 64 var rule = i.attr('data-rule'); 65 66 if (rule !== undefined) { 67 var ierror = false; // error flag for current input 68 var pos = rule.indexOf(':', 0); 69 if (pos >= 0) { 70 var exp = rule.substr(pos + 1, rule.length); 71 rule = rule.substr(0, pos); 72 } else { 73 rule = rule.substr(pos + 1, rule.length); 74 } 75 76 switch (rule) { 77 case 'required': 78 if (i.val() === '') { 79 ferror = ierror = true; 80 } 81 break; 82 83 case 'minlen': 84 if (i.val().length < parseInt(exp)) { 85 ferror = ierror = true; 86 } 87 break; 88 } 89 i.next('.validate').html((ierror ? (i.attr('data-msg') != undefined ? i.attr('data-msg') : 'wrong Input') : '')).show('blind'); 90 } 91 }); 92 if (ferror) return false; 93 else var str = $(this).serialize(); 94 95 var this_form = $(this); 96 var action = $(this).attr('action'); 97 98 if( ! action ) { 99 this_form.find('.loading').slideUp(); 100 this_form.find('.error-message').slideDown().html('The form action property is not set!'); 101 return false; 102 } 103 104 this_form.find('.sent-message').slideUp(); 105 this_form.find('.error-message').slideUp(); 106 this_form.find('.loading').slideDown(); 107 108 $.ajax({ 109 type: "POST", 110 url: action, 111 data: str, 112 success: function(msg) { 113 if (msg == 'OK') { 114 this_form.find('.loading').slideUp(); 115 this_form.find('.sent-message').slideDown(); 116 this_form.find("input:not(input[type=submit]), textarea").val(''); 117 } else { 118 this_form.find('.loading').slideUp(); 119 this_form.find('.error-message').slideDown().html(msg); 120 } 121 } 122 }); 123 return false; 124 }); 125 126});
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.