На веб-странице уже существует традиционная HTML-форма, которую модернизировали для отправки данных через AJAX с помощью плагина jQuery Form.

Опубликовал: Friday, June 14, 2024 в категории jQuery, Подборка рецептов | Пока нет комментариев

Теперь в форме необходимо организовать предварительную проверку данных, вводимых пользователем.

Решение

Для решения этой задачи воспользуемся плагином jQuery Validate (листинг 14.2.1).

Листинг 1 4 .2 .1 . Использование плагина jQuery Validate

Обсуждение

Не стоит пугаться внушительного объема кода, который содержит листинг 14.2.1. Настолько большой пример приведен с практической целью — показать организацию проверки данных, подразумевающих ввод по определенным правилам. Например, правильность ввода e-mail-адреса, URL страницы и т. д.

Детальное знакомство с примером начнем с рассмотрения HTML-кода. Первый элемент, который нам встретится в body, — элемент div с идентификатором

#output. Сюда будет выводиться ответ от сервера. Конечно в том случае, если данные из формы будут успешно отправлены. А пока про него можно забыть.

Дальше следует форма, содержащая практически все возможные элементы, которые только могут встречаться в формах. Элементы input типа text, password, file, checkbox, radio, reset, image, а также элементы select и textarea.

В таком виде, даже без подключения внешних JavaScript-файлов, эта форма вполне функциональна, и данные, введенные пользователем, будут отправлены на сервер. Но поскольку перед нами стоит задача проверки данных на стороне клиента, вернемся к разделу head веб-страницы и посмотрим, какие файлы потребуется подключить.

Первым идет файл стилевого оформления формы — css/form.css, за ним подключаем необходимые JavaScript-файлы. Файл библиотеки jQuery — js/jquery-1.5.2.min.js, файл плагина jQuery Validate — js/jquery.validate.js и файл плагина jQuery Form — js/jquery.form.js.

ПРИМЕЧАНИЕ

Совместное использование плагинов jQuery Form и jQuery Validate совершенно не обязательно. Плагин jQuery Validate может функционировать и отдельно.

Вот мы добрались до самого главного и интересного — наиболее подробно разберем JavaScript-код, который будет обеспечивать проверку правильности заполнения полей формы.

Сначала отслеживаем момент готовности DOM, затем выбираем форму по ее идентификатору #myForm и связываем с ней функциональность плагина jQuery Validate. При этом мы передаем плагину некоторые опции — rules, messages, submitHandler и errorPlacement.

Опции rules и messages кажутся очень похожими. Значения обеих опций — объекты, названия свойств которых соответствуют атрибутам name полей формы. Значения этих свойств — тоже объекты (допустима строка, если правило проверки единственное), пары ключ/значение которых описывают правила проверки для полей с соответствующим именем (для опции rules), и сообщения, выводимые пользователю при нарушении этих правил (для опции messages).

Объяснение получилось довольно запутанным, но у нас есть листинг кода, изучая который можно все хорошо понять. Разберем для примера одно поле формы, самое первое, предназначенное для ввода имени. В атрибуте name этого элемента указано значение Name, поэтому соответствующим ему свойством объекта rules является свойство с именем Name. Его значение — объект, в котором определены три свойства: required, minlength и maxlength. Значение true, указанное в свойстве required, сообщит плагину о том, что поле Name обязательно для заполнения, значение 2, указанное в свойстве minlength, ограничивает минимальную длину текста в этом поле двумя знаками, а значение 12 в свойстве maxlength задает максимальную длину текста.

Правила проверки для других полей создаются аналогично. Обратите внимание на свойства email или url. Значение true, переданное в этих опциях, заставит плагин проверять данные, введенные в эти поля, на соответствие форматам записи e-mailадреса и URL страницы.

В messages все похоже — для каждого правила из опции rules в опции messages создается пара. Только значениями в этом случае являются текстовые сообщения, выводимые пользователю при некорректном заполнении соответствующего поля формы.

Отдельно от этого ряда стоит проверка поля Examine. Это поле обязательно для заполнения, о чем свидетельствует опция required со значением true. В это поле должно быть введено число 13, указанное в свойстве equal. Но проблема в том, что такого метода проверки в плагине нет и, если мы не предпримем какие-либо действия, все наши труды не увенчаются успехом.

К счастью, в плагине предусмотрена возможность добавления собственных методов проверки. Воспользуемся этим и создадим нужный метод (листинг 14.2.1а).

Листинг 14.2.1 а . Использование плагина jQuery Validate

[code language=”javascript”]
$.validator.addMethod(“equal”,
function(value, element, params) { return value == params;
});

Первый аргумент, принимаемый методом addMethod, — строка, в которой передается имя добавляемого метода. В нашем случае это equal. Второй аргумент — функция, выполняющая необходимую проверку. Функция принимает три аргумента: аргумент value — это значение, введенное в поле формы, element — объект, характеризующий соответствующий HTML-элемент, и params — значение опции, с которой сравнивается введенное значение. Функция должна возвращать значения true или false в зависимости от результатов проверки. В примере из листинга 14.2.1а видно, что при совпадении значений аргументов value и params функция вернет true, в противном случае — false.

Метод addMethod может принимать еще и третий, необязательный аргумент, который может быть как строкой, так и функцией и определяет сообщение по умолчанию, выводимое пользователю при несоблюдении условий проверки.

Теперь вернемся к еще не рассмотренным опциям — submitHandler и errorPlacement. Функция, которую мы определим в опции submitHandler, будет вызвана при насту-

плении события submit формы в том случае, если все поля формы заполнены в соответствии с указанными правилами. В качестве единственного аргумента функция

принимает форму. Внутри функции для этой формы вызываем метод ajaxSubmit() уже знакомого нам плагина jQuery Form и передаем ему некоторые настройки. Например, в опции target указываем значение #output — идентификатор того элемента div, куда будет выводиться ответ от сервера.

Еще одна опция, присутствующая в этом примере, — errorPlacement. В ней можно определить функцию, которая будет обрабатывать ошибки проверки полей формы. Функция принимает два аргумента — error и element. Аргумент error содержит текст сообщения о произошедшей ошибке, а аргумент element — это объект, характеризующий элемент, в котором ошибка произошла.

Листинг 14.2.1 б. Использование плагина jQuery Validate

[code language=”javascript”]
function(error, element)
{ error.appendTo(element.parent()
.find(“label[for='”
+ element.attr(“name”) + “‘]”)
.find(“em”));
}

Функция, которую мы определили в опции errorPlacement, приведена еще раз в листинге 14.2.1б. Внутри функции мы вызываем метод appendTo() библиотеки jQuery. Метод appendTo() применен к error (это сообщение об ошибке), а аргументом метода appendTo() является выражение, которое помогает обнаружить тот са-

мый элемент, куда необходимо вставить сообщение об ошибке. Читайте внимательно! Сначала, с помощью метода parent() находим родительский элемент по отношению к тому, что был передан в аргументе element, затем вызываем метод find(), чтобы обнаружить элемент label с атрибутом for, значение которого соответствует атрибуту name того элемента, где произошла ошибка (если внимательно посмотрите HTML-код формы, то обнаружите, что они одинаковые), и наконец снова используем метод find() — получаем элемент em, находящийся внутри только что найденного элемента label. Именно в элемент em и будет вставлен текст сообщения об ошибке.

Конечно, мы разобрали не все возможные варианты применения плагина jQuery Validate, но он обладает настолько большим набором разнообразных опций, дополнительных методов, что для полного описания потребовалась бы отдельная книга. Более подробную информацию по работе с плагином можно обнаружить на официальном сайте jQuery по адресу http://docs.jquery.com/Plugins/Validation. Много примеров доступно на сайте разработчика плагина по адресу http:// jquery.bassistance.de/validate/demo/.

Источник: Самков Г. А. jQuery. Сборник рецептов. — 2-е изд., перераб. и доп. — СПб.: БХВ-Петербург, 2011. — 416 с.: ил. + CD-ROM — (Профессиональное программирование)

Похожие посты:

Комментировать

Your email address will not be published. Required fields are marked *