Введение или несколько слов о jQuery.validate
Для начала несколько слов о плагине jQuery.validate, чтобы те читатели, которые не сталкивались с ним, имели представление. Итак, этот плагин позволяет проводить валидацию полей веб-форм на стороне клиента. В него включен целый набор методов проверки различных типов полей форм, например, таких как: e-mail, url и других. Если в процессе проверки поле не проходит валидацию выводится сообщение об ошибке, и форма не отправляется. Сообщения об ошибках переведены на 37 различных языков, в том числе и русский.
Скачать плагин можно на официальном сайте .
У плагина есть метод validate
, который и делает всю работу. В коде вызова плагина вместе с остальными настройками (о которых вы можете узнать на официальном сайте в разделе Documentation) методу validate
передаются 2 объекта:
rules
и messages
. В объекте rules
методу передаются пары «ключ/значение», описывающие правила проверки полей. В качестве ключа передается имя элемента формы (или группы элементов, в случае если это флажки), а в качестве
значения - объект с параметрами.
В объекте messages
определяются сообщения об ошибках. Аналогично объекту rules
, в объекте messages
в качестве ключа передается имя элемента формы, а в качестве значения текст сообщения, которое отображается в случае, если
поле не проходит валидацию.
Подробнее о методе validate
и его параметрах, можно почитать здесь . Приведу небольшой пример кода вызова jQuery.validate.
JavaScript
Пишем функции для формирования правил (rules) и сообщений (messages)
Немного забегу вперед и сообщу читателю, что вызывать jQuery.validate мы будет в файле template.php шаблона компонента bitrix:form.result.new. Поля формы внутри компонента доступны из массива $arResult
. В процессе работы
шаблона во время подключения плагина jQuery.validate, мы создадим цикл, в котором будем обходить все элементы массива (поля) и проверять, должно ли поле проходить валидацию. Если да, то добавлять информацию о нем в объект rules
, а текст
сообщения об ошибке в объект messages
. Для этого нужно создать 2 функции, которые и будут все это проверять. Первая из функций будет проверять, обязательное ли поле для заполнения или нет, а вторая сохранять в message сообщения, которые будут
показаны в случае возникновения ошибки в различных элементах формы.
Функция №1 – GetValidateRules
PHP
Функция №2 – GetValidateMessages
PHP
Эти функции необходимо разместить внутри файла init.php (/bitrix/php_interface/).
Добавляем метки в поля веб-форм
После установки на демо-сайте существует 2 формы. В этой статье я буду работать с веб-формой «Обратная связь». В ней обязательными полями являются четыре: Имя, E-mail и Телефон и Ваши вопросы. Этого будет вполне достаточно, чтобы продемонстрировать работу плагина jQuery.validate.
Для начала нужно «пометить» эти поля для валидации. Для этого заходим в настройки формы «Обратная связь», а именно в раздел, где хранятся вопросы формы. Зайдем в настройки вопроса «Имя» и откроем закладку «Комментарии». Введем в него значение NAME.
В остальные поля (E-mail, Телефон и Ваши вопросы) введем соответственно значения EMAIL, PHONE и MESSAGE. Как вы могли заметить мы используем значения, которые упоминаются в функциях GetValidateRules
и GetValidateMessages
.
Обращу ваше внимание на то, что если у вас модуль «Веб-формы» работает в расширенном режиме, то вводить значения нужно не в поле «Комментарий», а параметры на закладке «Ответ» в настройках вопроса формы.
Размещаем и кастомизируем шаблон компонента bitrix:form.result.new
Переходим к основным действиям. Откроем на демо-сайте страницу «Обратная связь» (/communication/web-forms/feedback/). На ней размещен компонент bitrix:form.result.new с нашей веб-формой. Перед тем как вносить изменения нам нужно скопировать шаблон этого компонента. Я скопирую его в шаблон сайта по-умолчанию (.default) с именем validate. Таким образом файлы шаблона будут доступны в папке /bitrix/templates/.default/components/bitrix/form.result.new/validate/. Далее в статье я не буду указывать полный путь, когда буду описывать действия над файлами в этой папке.
Давайте ознакомимся с массивом $arResult
, который выводится в шаблоне. Нам же нужно знать, как обращаться к данным, которые мы сохранили в поле «Комментарий» настроек полей веб-формы. Для этого в файле template.php выведем массив с помощью
print_r()
. Вызовем эту функцию в начале шаблона. В массиве $arResult[“arQuestions”]
хранится
информация о вопросах нашей веб-формы. Проверьте элементы массива COMMENT
у вопросов NAME, PHONE, EMAIL и QUESTIONS: они должны быть заполнены значениями, которые мы указали в настройках вопросов в админке.
Далее нужно разместить jQuery.validate в шаблоне сайта. Скачайте архив с плагином по ссылке указанной в начале статьи, разархивируйте его и скопируйте файл jquery.validate.js в папку шаблона сайта. Я, например, разместил файл в дефолтном шаблоне в папке js (/bitrix/templates/.default/js/).
Подключим плагин. Для этого создайте в папке шаблона файл component_epilog.php со следующим кодом.
PHP
Добавляем в template.php PHP код, который будет формировать JS для вызова плагина jQuery.validate. Для обеспечения корректной работы плагина не следует забывать о подключении jQuery, а также о том, что подключение плагина следует делать после подключения jQuery.
PHP
Основной момент, на который нужно обратить внимание в этом коде – это 2 цикла, которые формируют JS-объекты rules
и messages
на основе информации о вопросах и структуре веб-формы из массива $arResult
. Код, расположенный
выше объектов rules
и messages
– это передача параметров плагину, сразу после объектов расположена функция errorPlacement
- в ней можно описать положение HTML-элементов в которых будут отображаться сообщения об ошибках. В
случае нашей веб-формы я решил разместить их внутри элементов <span> и расположить эти элементы рядом с полями, в которых обнаружатся ошибки. В самом низу находится обработчик события focus
полей веб-формы. Он нужен для того, чтобы скрывать
сообщения об ошибках в момент, когда посетитель ставит курсор в поле с ошибочными данными.
Уже сейчас, после добавления кода, плагин должен работать. Это можно проверить, если отравить незаполненную форму. Если все сделано правильно, то форма не отправится, а рядом с незаполненными обязательными полями появится сообщение об ошибке, с текстом, который указан
в функции GetValidateMessages
.
Ну вот практически все готово. Осталось только добавить несколько CSS-правил для оформления внешнего вида span’ов с сообщениями об ошибках.
Добавляем CSS стили
Откроем файл style.css и добавим в него следующее CSS-правило:
CSS
Этот код оформит элементы с сообщениями об ошибках так, как показано на рисунке ниже.
Заключение
Ну вот, собственно, и все. Мы подключили плагин jQuery.validate в шаблон компонента bitrix:form.result.new на сайте под управлением «1C-Битрикс».
Как вы могли заметить, сделать это не очень сложно, а пользы можно получить довольно много. Поэтому рекомендую вам использовать этот способ валидации полей в веб-формах на своем сайте или в проектах, которые вы разрабатываете.