Открыть меню    

Плагин jquery validation

плагин jquery validation Данная статья посвящена замечательному плагину jQuery validation. Статья неоконченная и в ближайшем будущем будет обязательно расширяться, с приведением примеров, конечно.

Сперва необходимо подключить к документу плагин validation. Страница плагина

HTML


    <script src="jquery.validate.js" type="text/javascript"></script>

Метод validate - проверяет выбранную форму. Методу validate передается объект, содержащий конфигурационные настройки, по которым проверяются элементы формы.

Определение правил проверки основанное на использовании классов

Вы определяете правило(а) и связываете его(их) с конкретным классом.

Ниже мы создаем правило, которое будет работать лишь с полями имеющими класс TestMaxValidation.

            $.validator.addClassRules({
                TestMaxValidation: {
                    max: 10
                }
            })

Выполняем проверку при изменении значения текстового поля .

            $('input').change(function(e) {
                $('form').validate().element($(e.target));
            });

Список встроенных методов проверки

Метод Описание Значения, или
как использовать
required Делает элемент обязательным. Работает с inputs, selects, checkboxes и radio buttons true или false
remote Запрашивает ресурс для проверки элемента формы remote: "check-email.php"
minlength Указываем элементу минимальную длину (кол-во символов) minlength: 3
maxlength Указываем элементу максимальную длину (кол-во символов) maxlength: 4
rangelength Указываем диапозон для кол-ва символов rangelength: [2, 6]
min Указываем минимальное числовое значение min: 13
max Указываем максимальное числовое значение max: 13
range Числовое значение должно нвходиться в пределах диапозона range: [13, 23]
email Значение должно соответствовать корректному e-mail адресу email: true
url Значение должно соответствовать корректному url-адресу url: true
date Значение должно соответствовать корректной дате js date: true
number Значение должно быть десятичным числом number: true
digits Значение должно содержать лишь цифры digits: true
creditcard Значение должно быть действительным номером кредитной карточки creditcard: true
equalTo требует, чтобы элемент соответствовал (был эквивалентен) другому элементу password_again: {
equalTo: "#password" }

Второй способ верификации элемента через классы

Вы также можете назначить правила верификации элемента непосредственно добавляя в элемент нужный класс (возможные классы приведены в таблице 'список встроенных методов проверки'). В данном случае класс не оказывает никакого влияния на css: этим классом вы лишь говорите плагину о том какой тип верификации необходимо применить к элементу формы. Например, мы хотим проверить поле на корректность введенной даты и обязательность. Для этого нам понадобится следующий код:

HTML

<input type="text" class="date required" name="somebody" />

Верификация при помощи объекта rules, метода rules

Объект rules

Объект rules, содержащий поля и типы верификации, передается в функцию validate. Чтобы использовать несколько правил к одному полю, необходимо создать еще один объект. Название поля есть значение атрибута name валидируемого поля.

jQuery

$('#form3').validate(
{
    rules : {
    field1:'required',
    field2:{
            digits:true,
            required:true
            }
    }
});
});

HTML


<form id="form3" action="" method="post">

    <label >
        <span>Проверяем поле при помощи  объекта rules </span>
        <input name="field1" type="text"  >
    </label>

    <label for="email">
        <span>Поле №2</span>
        <input  name="field2" >
    </label>

    <button type="submit"  name="send">...Отправить</button>

</form>

Метод rules

Существует специальный метод ссылка -> rules, при помощи которого вы можете читать, добавлять или удалять правила у элемента.

jQuery

$( "#myinput" ).rules( "add", {
required: true,
minlength: 2,
messages: {
required: "Required input"
}
});

HTML

<form id="form4" action="" method="post">
    <label >
        <span>Добавляем правила при помощи метода <code>rules</code> </span>
        <input id="myinput" type="text"  />
    </label>
    <button type="submit"  name="send">...Отправить</button>
</form>

Верификация при помощи атрибутов

Заранее предопределенные методы проверки (см. таблицу) можно использовать как атрибуты в элементе, этим вы сообщаете плагину validation, что необходимо осуществить конкретную проверку по атрибуту и его значению.

HTML

<input  type="text" minlength="15" url="true" required="true"   />

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

Вы можете поменять текст с сообщением об ошибке при помощи свойства messages. Лучше всего понять работу messages на простом примере: если вкратце, то вы определяете объект messages и в качестве значение используете, соответственно, имя элемента, название(я) проверки(ок) и текст с ошибкой. Вот так:

jQuery

            $('#form6').validate({
            rules:{
                one:{
                        digits:true,
                        required:true,
                        max:100
                    },
                two:{
                        minlength:6,
                        required:true
                    },
                  },
            messages:{
                one:{
                        digits:"Обязательно цифры",
                        required:"Поле оязательно",
                        max:"До 100"
                    },
                two:{
                        minlength:"Минимальное кол-во символов 6",
                        required:"Поле оязательны"
                    }
            }
            });

HTML

<form id="form6" action="" method="post">
    <span>Меняем текст для сообщений с ошибками </span>
    <input  type="text" name="one"  />
    <input  type="text"  name="two"  />
    <button type="submit"  name="send">...Отправить</button>
</form>

Собственная проверка для плагина validation

Создать собственную проверку относительно легко, перейдем сразу к примеру:

jQuery

$('#form7').validate({
    rules:{
        one:{
            digits:true,
            required:true,
            myMethod:20,
            }
        }
});

jQuery

$.validator.addMethod('myMethod',
    function(val,el,args)
{
    if(Number(val)*args  <= 100)
    {
        return  true;
    }
    else
    {
        return  false;
    }

    },"Ваше значение, помноженное"+
"на 20 , к сожалению, больше 100");

HTML

<input  type="text" name="one"  />

Пользовательская верификация реализуется при помощи метода addMethod, который вызывается посредством свойства jquery validator. Итак, методу addMethod передаются следующие параметры:

  • Имя проверки
  • Функция, выполняющая проверку: function(val, el, args) {….}
  • Сообщение, в случае ошибки
  • Об аргументе args стоит сказать особо, это аргументы, указанные при определении проверки. el – это HTMLelement; val – это значение элемента.

Работаем с сообщениями об ошибках

Свойство errorClass позволяет нам указать класс для некорректных элементов.

ErrorElement. По умолчанию сообщение с ошибкой выводится в сестринском элементе label. Чтобы изменить, например, label на div достаточно указать: errorElement: 'div'. Более подробно на странице плагина.

Чтобы регулировать поведение некорректных элементов, существуют две функции highlight (как выделять некорректны элемент) и unhighlight (ошибка ликвидирована, по умолчанию удалят error-класс). Обе функции принимают три аргумента: element, errorClass, validClass. Все просто.

HTML

<form id="form8" action="" method="post">
<code class="new">
</code>
    <label for="name">
        <span>unhighlight и highlight, errorElement, errorClass, validClass </span>
        <input  id="name"  type="text" name="one"  />
    </label>
<button type="submit"  name="send">...Отправить</button>
</form>

jQuery

$("#form8").validate({
    rules:{
        one:{
    digits:true,
    required:true
}
    },
    messages:{
        one:{
    digits:"Обязательно цифры",
    required:"Поле оязательно"
}
    },
    errorElement: "em",
    errorClass: "errorMessages",
    validClass: "success",
    highlight: function(element, errorClass, validClass) {
    $(element).addClass(errorClass).removeClass(validClass);
    $(element.form).find("label[for=" + element.id + "]")
    .addClass(errorClass);
    },
    unhighlight: function(element, errorClass, validClass) {
    $(element).removeClass(errorClass).addClass(validClass);
    $(element.form).find("label[for=" + element.id + "]")
    .removeClass(errorClass);
    }
});

Комментарии к статье

аватарка пользователя
2016-10-08
Ruslan

Откуда взяли элемент "em" в последнем примере (errorElement: "em",)?

аватарка пользователя
2016-12-19
Роман

Потрясный развернуй пост, спасибо! Очень помогли. Но у меня одна проблема, при валидации поля по классу, сообщение об ошибках на английском все равно. Не берется из messages Как это исправить?

аватарка пользователя
2020-01-13
ы

ы