Сегодня речь пойдет о вполне актуальной задаче — проверке вводимых пользователем значений в input поля Интернет-страницы. Стоит отметить что данная проверка всегда должна проводиться на стороне сервера, однако приятно, когда пользователю сообщается об ошибке сразу, а не после перезагрузки страницы. И так, начнем…
Обговорим детали задачи более подробно. Имеем Интернет-страницу с полем ввода значений и кнопкой. Кнопка должна отображаться лишь тогда, когда введенные в input данные соответсвуют некоторому шаблону.
<html> <body> <input type="text" /> <input type="button" value="OK" id="btn" /> </body> </html>
Как любитель универсальных решений, функцию проверки вводимых данных будем делать с возможностью добавления различных шаблонов. Вызов функции проверки повесим на событие отжатия клавиши в поле input. Подумав, что да как, и немного забежав вперед, опишем функцию проверки как:
function CheckString(_this, blocked_id, expr, template, maxlen) {}
, где _this — айди интупа для проверки, blocked_id — айди элемента, который будем скрывать, expr — не стандартный шаблон для проверки, template — имя стандартного шаблона для проверки, maxlen — максимальная длина вводимого значения
И так сама функция:
function CheckString(_this, blocked_id, expr, template, maxlen) { function GET_REXEP(str) { switch (str) { case "PASSPORT_NUMBER": return /\d\d\d\d\s\d\d\d\d\d\d$/; case "PASSPORT_ABOUT": return /\d\d\.\d\d\.\d\d\d\d\s.*$/; default: return /.*/; } } //Значения по умолчанию maxlen = maxlen || -1; template = template || ""; if (template != "") expr = GET_REXEP(template); if (maxlen != -1 && _this.value.length > maxlen) _this.value = _this.value.substr(0, maxlen-1); if (_this.value == "" || expr.test(_this.value)) document.getElementById(blocked_id).style.visibility = "visible"; else document.getElementById(blocked_id).style.visibility = "hidden"; }
Мы описали функцию, имеющую два стандартных шаблона для проверки: номер паспорта в виде 4 числа пробел 6 чисел и информация о паспорте в виде дата выдачи пробел любая строка.
Теперь если мы хотим проверять поле input на соответствие номеру паспорта, пишем так:
<input type="text" onkeyup="CheckString(this,'btn','','PASSPORT_NUMBER');" />
Пример проверки номера паспорта: