@Ghazascanner
_2019runbot
Ghazascanner File Manager
server :Linux www.thesweb.ru 4.19.0-22-amd64 #1 SMP Debian 4.19.260-1 (2022-09-29) x86_64
Current Path :
/
var
/
www
/
www-root
/
data
/
www
/
new.labinform.ru
/
pub
/
js
/
Path :
Upload File :
New :
File
Dir
/var/www/www-root/data/www/new.labinform.ru/pub/js/forms.js
/************************************** * Библиотека для работы с формами * управление валидацией на основе * атрибутов инпутов **************************************/ /************************************** *Проверка валидности email **************************************/ function validateEmail(val) { var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; if(reg.test(val) == false) { return false; } else { return true; } } /************************************** *Проверка валидности даты **************************************/ function validateDate(value) { var arrD = value.split("."); arrD[1] -= 1; var d = new Date(arrD[2], arrD[1], arrD[0]); if ((d.getFullYear() == arrD[2]) && (d.getMonth() == arrD[1]) && (d.getDate() == arrD[0])) { return true; } else { return false; } } /************************************** * Проверка соответствия значения инпута * правилам и генерация ЧП-сообщения * вход - js-объект типа input * выход - массив ошибок через \n * атрибуты управления валидацией (вешаются на input) * "prompt" - Имя поля для сообщения об ошибке * "req" - {0, 1} - признак обязательного поля * "check" - {num, charRu, date, email} - тип проверки * "minlem" - минимальная длина * "maxlen" - максимальная длина * ************************************/ function checkInput(el) { res = new Array(); typ = $(el).attr('type'); ch = $(el).attr('changed'); val = $(el).val(); nam = $(el).attr('name'); pr = $(el).attr('prompt'); req = $(el).attr('req'); check = $(el).attr('check'); minlen = $(el).attr('minlen'); maxlen = $(el).attr('maxlen'); if (!minlen) minlen = 0; if (!maxlen) maxlen = 999999999; if ((req == 1) && (val == '')) // requied res.push('Поле ' + pr + ' обязательно'); if (((typ == "checkbox") && (req > 0)) && (!$(el).attr('checked'))) res.push('Поле ' + pr + ' обязательно'); // typecast if (check == 'num') { r = val.replace(/[+\-0-9]*/, ''); if (r) res.push('Поле ' + pr + ' должно содержать только цифры'); } else if ((check == 'date') && (val != '')) { if (!validateDate(val)) { res.push('Введенное значение ' + pr + ' не является корректной датой'); } } else if ((check == 'email') && (val != '')) { if (!validateEmail(val)) { res.push('Введенное значение ' + pr + ' не является корректным адресом электронной почты'); } } else if (check == 'charRu') { r = val.replace(/[А-я]*/, ''); if (r) res.push('Поле ' + pr + ' должно содержать только русские буквы'); } else if (check == 'equal') { var eqname = $(el).attr('equalto'); var val2 = $('#' + eqname).val(); if (val != val2) { pr2 = $('#' + eqname).attr('prompt'); res.push('Значения полей ' + pr + ' и ' + pr2 + ' должны совпадать'); } } l = val.length; if ((l < minlen) || (l > maxlen)) res.push('Поле ' + pr + ' должно содержать от ' + minlen + ' до ' + maxlen + ' символов'); // if (res.length > 0) // $('#'+nam+'_err').html(implode("<br />", res)); // else // $('#'+nam+'_err').html(''); return implode("\n", res); } /*********************************************** * валидация полей формы на основе атрибутов инпутов * вход - js-объект формы * выход - сообщение с ошибками и false либо true ***********************************************/ function validateForm(form) { msg = new Array(); $(form + ':input').each(function(){ s = checkInput($(this)); if (s !== '') { msg.push(s); } // добавляем поле-валидатор для server-side id = $(this).attr('id'); nam = $(this).attr('name'); req = $(this).attr('req'); check = $(this).attr('check'); minlen = $(this).attr('minlen'); maxlen = $(this).attr('maxlen'); if ((req !== undefined) || (check !== undefined) || (minlen !== undefined) || (maxlen !== undefined)) { $(id + '_attrs').remove(); input = '<input type="hidden" name="' + nam + '_atttrs" value="req=>' + req + ',check=>' + check + ',minlen=>' + minlen + ',maxlen=>' + maxlen + '" />'; $(form).append(input); } }); return [msg.length, msg]; }