Ajax проверка форм на jQuery

Приветствуйте новый jQuery плагин  моей разработки. Задача — ajax валидация полей форм.

ajaxValidation

Вся суть плагина — в названии. Он самый, что ни на есть ajax — валидация происходит на стороне сервера, плагин лишь занимается отправкой данных на проверку в нужный момент.

Если вы ищите плагин, который бы проверял поля формы «на месте», на стороне клиента, тогда вам нужно что-то другое. Например, можете посмотреть в сторону Validation.

Зачем писать плагин, который будет отправлять все данные для валидации на сервер? Почему не проверять на стороне клиента?

Плюса  в основном три:

  1. Большая универсальность.
    Можно просто отправлять все необходимые поля формы на валидацию и предоставлять PHP скрипту решать, правильны ли данные. Удобно, если вы используете фреймворк или его подобие и можете программно выводить элементы формы и четко судить о том, какие поля формы, какие значения могут иметь.
    Собственно в Yii Framework есть компонент, который работает приблизительно так же как и этот плагин.
  2. Меньше кода. Даже, если данные были проверены на стороне клиента, их все равно потом нужно заново проверять уже на сервере после сабмита формы. Двойная работа.
  3. Некоторые вещи не проверишь на стороне клиента. Например, проверка на уникальность имени пользователя никак не сможет обойтись без запроса к серверу.

Решать, в общем-то, вам. Смотрите по проекту, подходит ли вам этот плагин или нет.

Скриншот

Вот он:




Использование

Простое!

Скачивайте последнюю версию — 1.0.0. Лицензия — MIT. Версия jQuery — 1.4.3 и выше.

Распаковывайте, подключайте к странице:

<script src="jquery.ajaxValidation.js" type="text/javascript" charset="utf-8"></script>

А теперь:

$('form').ajaxValidation();

Готово! Все элементы в формах, которые подпадают под селектор :input при изменении своего содержимого будут обращаться к серверу и проверять значения. Это режим работы по-умолчанию.

В запросе будут переданы:

  • Атрибут name элемента.
  • Value элемента.
  • И дополнительный атрибут элемента (по умолчанию class).
    Зачем? Например, вы можете прописать в классах правила валидации. Скриптом-обработчиком получаете список классов, разбираете на составляющие, а затем вызываете известные валидаторы из списка.

Элементы запроса завернуты в массив с именем формы.

Плагин ожидает ответ в виде json объекта из двух переменных: флага hasError и строки message с сообщением о результате проверки.

По-умолчанию, строка-результат записывается в элемент с классом .validationSummary, который находится на одном уровне с тем :input, который вызвал проверку. Поэтому необходимо помещать элементы формы и .validationSummary в контейнер. Вот так:

<div class="row">

<label for="email">Email:</label>

<input type="text" name="email" class="nonEmpty email" />

<div class="validationSummary"></div>

</div>

Во время валидации контейнеру будут присвоены различные классы. По-умолчанию: .waiter, .bad, .good — для разных состояний проверки. Используя их вы сможете достаточно гибко менять оформление формы.

Альтернативный режим работы

Альтернативный режим работы переключается параметром mode : submit. В этом режиме валидация формы происходит при попытке ее сохранения (submit).

Отправляются все поля формы. Если форма проходит валидацию, она сразу же сабмитится. Если есть ошибки, сообщение об ошибке записывается в .validationSummary, который на этот раз должен быть один для всей формы.

Примеры

Легче всего понять работу плагина на примерах.

Пример 1. Демонстрирует основной режим работы и самую простую конфигурацию.

Пример 2. Показывает использование дополнительных настроек, а также использование callback'ов для отправки двух полей в одном запросе.

Пример 3. Альтернативный режим работы и методы, позволяющие подключать и отключать плагин.

Пример 4. Показывает, как используя коллбеки, можно перенаправить вывод сообщений об ошибках в jQuery UI Dialog.

Документация

Доступна на английском здесь. Плагин очень неплохо настраивается и кастомизируется.

Баги

— Вы видите баги? Вот и я не вижу. А они есть.

Если все же увидите, пишите в комментарии или в форму обратной связи (ссылка сверху). Будем исправлять.



Random Posts

  • http://www.escortsmeet.com/ escort listings

    об ошибке записывается в .validationSummary, который на этот раз должен быть один для всей формы.

  • http://www.xcnews.ru Zombie

    во всех четырех примерах кнопка «submit» по умолчанию не задизейблена.

  • Toijer

    если ошибку написать на русском, она не показывается

    • Zombie Spr

      кодировку проверь. должна быть utf-8.