1function viewLoadImg(_this){ 2 let _max_size = 4194304, // 4mb 3 _max_img = 4, // ÑколÑко Ñайлов можно загÑÑжаÑÑ 4 _files = _this.files, 5 _lenght = _files.length; 6 let valid_ext = ["jpg", "jpeg", "webp", "png"]; //ÑÐ°Ð¹Ð»Ñ ÐºÐ¾ÑоÑÑе можно загÑÑжаÑÑ 7 let low_case; 8 9 $(_this).closest('.js_line_form_img').find('.info_inp').remove(); 10 $(_this).closest('form').find('.view_load_img div').remove(); 11 12 for (const file of _this.files) { 13 $(_this).closest('form').find('.view_load_img').append("<div>"+file.name+" ÑÐ°Ð·Ð¼ÐµÑ Ñайла "+file.size+" байÑ.</div>"); 14 } 15 16 $(_this).closest('form').find('.view_load_img').append('<div>ÐÑбÑанно '+_lenght+' Ñайлов</div>'); 17 18 // ÐÑовеÑÑем на колиÑеÑÑво каÑÑинок 19 if(_lenght > _max_img){ 20 $(_this).closest('.js_line_form_img').addClass('error').removeClass('correct').append('<div class="info_inp">Ðе болÑÑе '+_max_img+' каÑÑинок</div>'); 21 return false; 22 } else { 23 $(_this).closest('.js_line_form_img').removeClass('error').addClass('correct'); 24 } 25 26 // ÐÑовеÑÑем ÑÐ°Ð·Ð¼ÐµÑ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ Ñайла и его ÑаÑÑиÑение 27 for (const _file_item of _this.files) { 28 low_case = ext(_file_item.name); 29 if(_file_item.size > _max_size){ 30 $(_this).closest('.js_line_form_img').addClass('error').removeClass('correct').append('<div class="info_inp">Ðдин из Ñайлов пÑевÑÑÐ°ÐµÑ Ð¼Ð°ÐºÑималÑнÑй ÑазмеÑ, '+_max_size+' байÑ</div>'); 31 return false; 32 } else if(!valid_ext.includes(low_case.toLowerCase())){ 33 $(_this).closest('.js_line_form_img').addClass('error').removeClass('correct').append('<div class="info_inp">Ðе веÑнÑй Ñип Ñайла: '+_file_item.name+'</div>'); 34 return false; 35 } else { 36 $(_this).closest('.js_line_form_img').removeClass('error').addClass('correct'); 37 } 38 } 39 40 function ext(name) { 41 let m = name.match(/\.([^.]+)$/) 42 return m && m[1] 43 } 44} 45 46//пÑовеÑÑем ÑÑо Ð±Ñ Ð¾Ð±ÑзаÑелÑное поле не бÑло пÑÑÑÑм 47function checkLength(_this){ 48 let _parent = _this.closest('.js_line_form'); 49 if(_this.val().length === 0) { 50 _parent.find('.info_inp').remove(); 51 _parent.addClass('error').removeClass('correct').append('<div class="info_inp">Ðоле обÑзаÑелÑно Ð´Ð»Ñ Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ</div>'); 52 } else { 53 _parent.removeClass('error').addClass('correct').find('.info_inp').remove(); 54 } 55} 56 57// пÑовеÑÑем email 58function checkEmail(_this){ 59 let reg = /^[a-zA-Z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$/; 60 let address = _this.val(); 61 if(reg.test(address) == false) { 62 _this.closest('.js_line_form').find('.info_inp').remove(); 63 _this.closest('.js_line_form').addClass('error').removeClass('correct').append('<div class="info_inp">Email введен некоÑÑекÑно</div>'); 64 } else { 65 _this.closest('.js_line_form').removeClass('error').addClass('correct').find('.info_inp').remove(); 66 } 67} 68 69// пÑовеÑÑем ÑелеÑон 70function checkTel(_this){ 71 let reg = /^\+7\s\([0-9]{3}\)\s[0-9]{3}\-[0-9]{2}\-[0-9]{2}$/; 72 let address = _this.val(); 73 if(reg.test(address) == false) { 74 _this.closest('.js_line_form').find('.info_inp').remove(); 75 _this.closest('.js_line_form').addClass('error').removeClass('correct').append('<div class="info_inp">ÐÐ¾Ð¼ÐµÑ ÑелеÑона введен некоÑÑекÑно</div>'); 76 } else { 77 _this.closest('.js_line_form').removeClass('error').addClass('correct').find('.info_inp').remove(); 78 } 79} 80 81// пÑовеÑÑем radio 82function checkRadio(_this){ 83 _this.each(function(i, e){ 84 if(e.checked == true){ 85 _this.closest('.js_line_form').removeClass('error').addClass('correct').find('.info_inp').remove(); 86 return false;
87 } else { 88 _this.closest('.js_line_form').find('.info_inp').remove(); 89 _this.closest('.js_line_form').addClass('error').removeClass('correct').append('<div class="info_inp">ÐÑжно ÑÑо-Ñо вÑбÑаÑÑ</div>'); 90 } 91 }); 92} 93 94// пÑовеÑÑем select 95function checkSelect(_this){ 96 _this.each(function(i, e){ 97 if(e.selected == true){ 98 if(e.disabled == true){ 99 _this.closest('.js_line_form').find('.info_inp').remove(); 100 _this.closest('.js_line_form').addClass('error').removeClass('correct').append('<div class="info_inp">ÐÑжно ÑÑо-Ñо вÑбÑаÑÑ</div>'); 101 return false; 102 } 103 _this.closest('.js_line_form').removeClass('error').addClass('correct').find('.info_inp').remove(); 104 return false; 105 } else { 106 _this.closest('.js_line_form').find('.info_inp').remove(); 107 _this.closest('.js_line_form').addClass('error').removeClass('correct').append('<div class="info_inp">ÐÑжно ÑÑо-Ñо вÑбÑаÑÑ</div>'); 108 } 109 }); 110} 111 112// пÑовеÑÑем обÑзаÑелÑнÑе Ð¿Ð¾Ð»Ñ Ð¸ ÑÑавим нÑжнÑе клаÑÑÑ 113// в div Ñ ÐºÐ»Ð°ÑÑом js_line_form, еÑли надо input ÑделаÑÑ Ð¾Ð±ÑзаÑелÑнÑм, добавÑÑе клаÑÑ required 114// добавиÑÑ ÐºÐ»Ð°ÑÑ js_check_email Ð´Ð»Ñ Ñега input, Ð´Ð»Ñ Ð¿ÑовеÑки email 115// добавиÑÑ ÐºÐ»Ð°ÑÑ js_check_tel Ð´Ð»Ñ Ñега input, Ð´Ð»Ñ Ð¿ÑовеÑки маÑки ÑелеÑона 116// добавиÑÑ ÐºÐ»Ð°ÑÑ js_check_textarea Ð´Ð»Ñ Ñега textarea, Ð´Ð»Ñ Ð¿ÑовеÑки на заполненноÑÑÑ 117// добавиÑÑ ÐºÐ»Ð°ÑÑ js_check_checked Ð´Ð»Ñ Ñега input, Ð´Ð»Ñ Ð¿ÑовеÑки check или radiobox 118// добавиÑÑ ÐºÐ»Ð°ÑÑ js_check_select Ð´Ð»Ñ Ñега select, Ð´Ð»Ñ Ð¿ÑовеÑки вÑбоÑа 119function checkRequired(_form){ 120 $(_form).find('.js_line_form').each(function(i, e){ 121 if(i !== 0){ 122 if($(e).hasClass('required')){ 123 if($(e).find('input').hasClass('js_check_email')){ 124 checkEmail($(e).find('input')); 125 } else if($(e).find('input').hasClass('js_check_tel')) { 126 checkTel($(e).find('input')); 127 } else if($(e).find('textarea').hasClass('js_check_textarea')){ 128 checkLength($(e).find('textarea')); 129 } else if($(e).find('input').hasClass('js_check_checked')){ 130 checkRadio($(e).find('input')); 131 } else if($(e).find('select').hasClass('js_check_select')){ 132 checkSelect($(e).find('select option')); 133 } else { 134 checkLength($(e).find('input')); 135 } 136 } else { 137 $(e).addClass('correct'); 138 } 139 } 140 }); 141 return checkFormReady($(_form).find('.js_line_form')); 142} 143 144// можно ли ÑделаÑÑ AJAX запÑÐ¾Ñ 145function checkFormReady(_form){ 146 let _return = true; 147 if($('.js_line_form_img').hasClass('error')){ 148 _return = false; 149 } 150 $(_form).each(function(i, e){ 151 if(i !== 0){ 152 if($(e).hasClass('error')){ 153 _return = false; 154 } 155 } 156 }); 157 return _return; 158} 159 160// маÑка ÑелеÑона 161let masks = { 162 init: function () { 163 this.phoneMask() 164 }, 165 phoneMask: function (t) { 166 let n = void 0 !== t ? t : $('input.maskphone'), 167 i = !1, 168 a = {}; 169 n.each(function () { 170 let t = $(this); 171 t.mask && (t.on("paste drop", function () { 172 let t = $(this), 173 n = !t.val(), 174 a = t.get(0), 175 e = a.selectionEnd - a.selectionStart; 176 (n || t.val().length === e) && (i = !0) 177 }), 178 t.on("input", function (t) { 179 let n = $(this), 180 a = n.val(); 181 if (a.startsWith("8")) { 182 if (i && 11 !== a.length) 183 return void (i = !1); 184 i = !1, 185 t.stopPropagation(), 186 a = a.replace("8", "+7"), 187 n.val(a) 188 } 189 }), 190 t.mask("+7 (000) 000-00-00", a) 191 ) 192 }) 193 } 194}; 195 196$(document).ready(function(){ 197 masks.init(); 198 199 $('.js_ajax_form').on('click', function(e){ 200 e.preventDefault(); 201 if(checkRequired($(this).closest('form'))){ 202 let _data_form = document.forms.form_full; 203 let file_data = $('.js_form_files')[0].files; 204 let formData = new FormData(_data_form); 205 $.each(file_data, function (key, value) { 206 formData.append('file-'+key, value); 207 }); 208 formData.delete('files') 209 $.ajax({ 210 type: 'post', 211 url: '/inc/send.php', 212 cache: false, 213 contentType: false, 214 processData: false, 215 data: formData, 216 dataType: 'json', 217 success: function (result) { 218 if(result.result == 'success'){ 219 document.forms.form_full.reset(); 220 $('.view_load_img').find('div').remove(); 221 $('.js_line_form, .js_line_form_img').removeClass('correct error'); 222 alert('ÐиÑÑмо ÑÑпеÑно оÑпÑавлено'); 223 } 224 }, 225 error: function (result) { 226 alert('ÐÑибка загÑÑзки'); 227 } 228 }); 229 } 230 return false;
231 }); 232 233 $('.js_check_email').on('blur', function(){ 234 let _this = $(this); 235 if(_this.closest('.js_line_form').hasClass('required') || _this.val().length){ 236 checkEmail(_this); 237 } 238 }); 239 240 $('.js_check_tel').on('blur', function(){ 241 let _this = $(this); 242 if(_this.closest('.js_line_form').hasClass('required')) { 243 checkTel(_this); 244 } 245 }); 246 247 $('.js_check_textarea').on('blur', function(){ 248 let _this = $(this); 249 if(_this.closest('.js_line_form').hasClass('required')) { 250 checkLength(_this); 251 } 252 }); 253});
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.