1function initValidation(){ 2 var errorClass = 'error'; 3 var successClass = 'success'; 4 var regEmail = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; 5 var regPhone = /^[0-9]+$/; 6 7 $('form.validate-form').each(function() 8 { 9 var form = $(this); 10 var successFlag = true; 11 var inputs = form.find('input:text, input:password, textarea, select, input:checkbox'); 12 var chk = form.find('.change-box'); 13 var chkBlock = chk.parents('.open-close-inner'); 14 var innerInputs = chkBlock.find('input:text, input:password, textarea'); 15 var erroText = form.find('.error-text').hide(); 16 17 // form validation function 18 function validateForm() 19 { 20 successFlag = true; 21 22 inputs.each(checkField); 23 if (successFlag) 24 { 25 sendForm(); 26 } 27 } 28 chk.bind('change', function() 29 { 30 if (this.checked === false) 31 { 32 chkBlock.removeClass(errorClass); 33 innerInputs.parent().removeClass(errorClass).removeClass(successClass); 34 } 35 }); 36 37 function sendForm() 38 { 39 $('.request_ajax_load').show(); 40 var user_name = $('#name').val(); 41 var user_phone = $('#phone').val(); 42 var user_email = $('#email').val(); 43 var user_skype = $('#skype').val(); 44 var user_question = $('#question').val(); 45 var admin_email = $('#admin_email').val(); 46 47 var xhr; 48 49 if (xhr && xhr.readyState != 4) 50 { 51 xhr.abort(); 52 } 53 xhr = $.ajax({ 54 url: "/dev/ajax/askQuestion.php", 55 type: "POST", 56 data: ({user_name: user_name, user_phone: user_phone, user_question: user_question, user_skype: user_skype, admin_email: admin_email, user_email: user_email}), 57 /*error: function(i){alert('Error');},*/ 58 success: function(result, textStatus) 59 { 60 $('.request_ajax_load').hide(); 61 form.addClass('completed'); 62 } 63 }); 64 65 if( itisheaderrequest ) 66 ga('send', 'event', 'заÑвка', 'оÑпÑавка заÑвки ', 'mrybakov | кнопка заÑвки в Ñапке'); 67 else 68 ga('send', 'event', 'заÑвка', 'оÑпÑавка заÑвки ', 'mrybakov | кнопка заÑвки в Ñеле ÑÑÑаниÑÑ'); 69 } 70 // check field 71 function checkField(i, obj) 72 { 73 var currentObject = $(obj); 74 var currentParent = currentObject.closest('div'); 75 if (currentObject.hasClass('inner-required') && chk.is(':checked')) 76 { 77 setState(currentParent, currentObject, !currentObject.val().length || currentObject.val() === currentObject.prop('defaultValue')); 78 } 79 if (currentObject.hasClass('inner-required-number') && chk.is(':checked')) 80 { 81 setState(currentParent, currentObject, !regPhone.test(currentObject.val())); 82 } 83 // not empty fields 84 if (currentObject.hasClass('required')) 85 { 86 setState(currentParent, currentObject, !currentObject.val().length || currentObject.val() === currentObject.prop('defaultValue')); 87 } 88 // correct email fields 89 if (currentObject.hasClass('required-email')) 90 { 91 setState(currentParent, currentObject, !regEmail.test(currentObject.val()) || currentObject.val() === currentObject.prop('defaultValue')); 92 } 93 // correct number fields 94 if (currentObject.hasClass('required-number')) 95 { 96 setState(currentParent, currentObject, !regPhone.test(currentObject.val())); 97 } 98 // something selected 99 if (currentObject.hasClass('required-select')) 100 { 101 setState(currentParent, currentObject, currentObject.get(0).selectedIndex === 0); 102 } 103 if (currentObject.hasClass('change-box')) 104 { 105 setState(currentParent, currentObject, !currentObject.is(':checked')); 106 } 107 } 108 109 // set state 110 function setState(hold, field, error) 111 { 112 hold.removeClass(errorClass).removeClass(successClass); 113 if (error) 114 { 115 hold.parents('.row').addClass('error'); 116 hold.addClass(errorClass); 117 field.one('focus',function(){hold.removeClass(errorClass).removeClass(successClass);}); 118 successFlag = false; 119 } 120 else 121 { 122 hold.parents('.row').removeClass('error'); 123 hold.addClass(successClass); 124 } 125 } 126 127 // form event handlers
128 $('#leave_request_btn').click(validateForm); 129 /* form.submit(validateForm); */ 130 return false; 131 }); 132} 133 134var itisheaderrequest = false; 135 136$(document).ready(function() 137 { 138 $('#fancybox-close, #additional_close').click(function() 139 { 140 if ($('.validate-form').hasClass('completed')) 141 { 142 /* console.log('Click!'); */ 143 $('.form-request .row input, .form-request .row textarea').each(function() 144 { 145 $(this).val(''); 146 }); 147 $('.form-request .row').each(function() 148 { 149 $(this).removeClass('error'); 150 }); 151 $('.form-request .error-text').each(function() 152 { 153 $(this).hide(); 154 }); 155 $('.validate-form').removeClass('completed'); 156 $('.block-completed').hide(); 157 } 158 }); 159 160 $(".btn-request").click(function(){ 161 if($(this).parents("#header").length) 162 itisheaderrequest = true; 163 else 164 itisheaderrequest = false; 165 }); 166 167}); 168 169jQuery(function(){ 170 //jQuery("#phone").mask("+7 (999) 999-99-99"); 171});
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.