JS: Проверка вводимых значений

Сегодня речь пойдет о вполне актуальной задаче — проверке вводимых пользователем значений в 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');" /> 

Пример проверки номера паспорта:


Запись опубликована в рубрике JavaScript с метками , , , , , , . Добавьте в закладки постоянную ссылку.