I’m using jQuery Validate, but I really don’t want to have any error messages whatsoever. Rather, I need to have red boxes around offending inputs/selects/etc. These red boxes were a piece of cake to add, but I still cannot remove error messages themselves. How do I disable them altogether?
ripper234
221k273 gold badges629 silver badges902 bronze badges
asked Oct 16, 2009 at 13:20
Anton GogolevAnton Gogolev
113k38 gold badges197 silver badges288 bronze badges
Use a custom error placement function (see the plugin’s options) that doesn’t append the error message to anything.
$('#form').validate({
errorPlacement: function(error,element) {
return true;
}
});
Or you could put the error messages elsewhere on the page — say in a DIV at the top of the page.
Jeff Miller
2,4051 gold badge26 silver badges41 bronze badges
answered Oct 16, 2009 at 13:35
tvanfossontvanfosson
523k99 gold badges697 silver badges794 bronze badges
3
You can override the showErrors
function:
jQuery('form').validate({
showErrors: function(errorMap, errorList) {
// Do nothing here
},
onfocusout: false,
onkeyup: false,
rules: {
email: {
required: true
}
},
messages: {
email: {
required: 'The email is required'
}
}
});
answered Oct 16, 2009 at 13:36
Darin DimitrovDarin Dimitrov
1.0m270 gold badges3284 silver badges2923 bronze badges
2
This is how I do it. Just put $.validator.messages.required = '';
before your call to initialise validate() i.e.:
$.validator.messages.required = '';
$('#formData').validate({});`
This will make it show the styles on the inputs, but no message labels!
answered May 10, 2015 at 12:41
1
Из этой статьи вы узнаете, как реализовать простую валидацию формы с помощью jQuery-плагина.
Использование jQuery-плагина для проверки данных в форме удобно по нескольким причинам. Этот способ предоставляет дополнительные опции – например, возможность выводить сообщения об ошибках и добавлять обработку различных условий проверки. Применение готового плагина также позволяет добавлять валидацию в формы без внесения видимых изменений в макет страницы. Условия проверки можно с легкостью изменять, добавлять и удалять на любом этапе разработки.
- Приступаем к работе
- Валидация первой формы
- Опции validate() метода
- Добавление правил валидации для полей ввода
- Создание собственных сообщений об ошибках
- Кастомизация сообщений об ошибках
- Дополнительные опции настройки плагина
- Формы jQuery, доступные на CodeCanyon
- Конструктор пошаговых jQuery форм Timon Step Form
- Smart Forms
- Just Forms Advanced
- Forms Plus JS
- Sky Forms
- Заключение
В этом руководстве мы будем использовать плагин для валидации форм под названием jQuery Validation Plugin. Данный плагин имеет обширный набор функций, а также позволяет добавлять пользовательские условия проверки данных.
Перед использованием расширения на странице нам нужно будет добавить к нашему проекту необходимые файлы. Таких файлов два – первый включает в себя основную функциональность плагина для проверки базовых пользовательских данных. Второй файл содержит дополнительные методы валидации для проверки номеров банковских карт, телефонов и так далее.
Добавить файлы в проект можно с помощью менеджера пакетов – Bower или npm. Кроме того, можно получить прямую CDN-ссылку на эти файлы и вставить ее в тег script на странице. Поскольку это jQuery-плагин, вам также понадобится ссылка на соответствующую библиотеку:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.0/jquery.validate.min.js"></script>
После того, как ссылки добавлены в код страницы, можно приступать к валидации любой формы с помощью метода validate.
Рассматриваемый нами плагин можно использовать без внесения каких-либо заметных изменений в разметку страницы. Единственная поправка, которую вам потребуется сделать – это добавить id или class к форме, к которой нужно подключить валидацию.
Ниже приведена разметка базовой формы, ввод данных в которой мы будем проверять с помощью jQuery-плагина.
<form id="basic-form" action="" method="post"> <p> <label for="name">Name <span>(required, at least 3 characters)</span></label> <input id="name" name="name" minlength="3" type="text" required> </p> <p> <label for="email">E-Mail <span>(required)</span></label> <input id="email" type="email" name="email" required> </p> <p> <input class="submit" type="submit" value="SUBMIT"> </p> </form>
Для проверки введенной информации не потребуется написание дополнительного кода на JavaScript. При этом плагин обеспечит вывод сообщений об ошибках под каждым текстовым полем. У нас также будет возможность оформить сообщения в любом желаемом стиле.
Для подключения валидации к этой форме надо всего лишь вставить приведенный ниже фрагмент, написанный на JavaScript, в код страницы:
$(document).ready(function() { $("#basic-form").validate(); });
Подразумевается, что вы уже добавили к проекту необходимые файлы плагина. Вставка приведенного выше фрагмента кода обеспечит надлежащую проверку формы и вывод сообщений об ошибках. Вот рабочая демонстрация плагина:
Рассматриваемая нами библиотека обеспечивает максимально дружеское отношение к пользователю: сообщения об ошибках появляются только в том случае, когда это действительно необходимо. К примеру, если вы пройдетесь по полям для ввода имени и адреса электронной почты, не вводя никаких данных, сообщения об ошибке вы не получите. Однако если вы перейдете на поле для ввода email-адреса после введения всего одной буквы в поле имени, вы увидите сообщение о том, что имя должно состоять как минимум из трех символов.
Сообщения об ошибках передаются в DOM (объектную модель документа) с помощью элемента label. Поскольку этот элемент предусматривает класс error, к сообщениям можно легко применить собственные стили. То же самое справедливо в отношении invalid input, у которого тоже имеется класс error.
В предыдущем примере мы вызывали метод validate() без передачи ему каких-либо параметров. Однако у нас есть возможность передать этому методу объект, содержащий множество параметров. Значения этих параметров будут определять способы, с помощью которых плагин будет проводить валидацию данных, выводить ошибки и так далее.
Если вы хотите, чтобы плагин игнорировал какие-то элементы в ходе проверки, вы можете передать нужный класс или селектор в метод ignore(). С этого момента плагин будет игнорировать класс при проверке данных в форме.
Вы также можете передать определенные правила в метод validate() для установления правил, в соответствии с которыми должна проверяться введенная информация. Значением параметра rules должны быть пары «ключ-значение». Ключом в каждом случае является название проверяемого элемента, а значением – набор правил для проверки информации.
Также можно добавить проверку условий данных в различных полях – с использованием ключевого слова depends («зависит от») и возвращая, соответственно, результат true («истинно») или false («ложно»). Ниже приведен пример использования простого набора правил для определения корректности введенных данных:
$(document).ready(function() { $("#basic-form").validate({ rules: { name : { required: true, minlength: 3 }, age: { required: true, number: true, min: 18 }, email: { required: true, email: true }, weight: { required: { depends: function(elem) { return $("#age").val() > 50 } }, number: true, min: 0 } } }); });
В приведенном выше фрагменте кода ключи name («имя»), age («возраст»), email и weight («вес») представляют собой названия элементов ввода input. Каждому ключу соответствует объект-значение, а пары ключей и значений определяют логику проверки информации, введенной в форму.
Такие опции валидации схожи с атрибутами, которые вы можете добавить в разметку формы. Например, установка параметра required на true сделает элемент обязательно необходимым для успешной отправки формы. Установление minlength на значение 3 обяжет пользователей вводить в поле как минимум три символа. Есть и другие встроенные методы валидации, с которыми можно ознакомиться на странице с технической документацией.
Важный момент, на который необходимо обратить внимание в приведенном выше коде – использование depends для того, чтобы сделать обязательным условием ввод веса, если возраст превышает 50 лет. Условие реализовано с помощью возвращения значения true функцией обратного вызова в том случае, если значение, введенное в поле age, превышает 50.
Рассматриваемый нами плагин позволяет создавать собственный набор сообщений об ошибках, соответствующих различным правилам проверки данных, введенных в форму. Создание сообщения об ошибке начинается с задания объекта-значения для ключа messages. Для каждого поля ввода определяется такая пара ключа и значения, и соответствующее сообщение об ошибке.
Ниже приведен пример кода, который обеспечивает вывод сообщений об ошибках при вводе неверных данных в любое из полей формы:
messages : { name: { minlength: "Name should be at least 3 characters" }, age: { required: "Please enter your age", number: "Please enter your age as a numerical value", min: "You must be at least 18 years old" }, email: { email: "The email should be in the format: abc@domain.tld" }, weight: { required: "People with age over 50 have to enter their weight", number: "Please enter your weight as a numerical value" } }
Как и правила, messages опираются на названия полей ввода. Каждое из этих полей принимает объект, состоящий из ключа и значения. Ключом является правило валидации, а значением – сообщение об ошибке, которое выводится в случае нарушения правила.
Например, поле age с помощью свойства required вызовет сообщение об ошибке, если останется незаполненным. Кроме того, если введенная информация не является числовым значением, поле вызовет ошибку number.
Как вы сможете убедиться, плагин отображает сообщения об ошибках, используемые по умолчанию в том случае, если вы не предоставили ему свои собственные. Попробуйте ввести различные данные в приведенный ниже демонстрационный образец, и вы увидите как стандартные, так и кастомные уведомления об ошибках.
Иногда возникает необходимость добавления собственных классов к элементам ввода – для использования дополнительных правил или для лучшей интеграции с существующей темой оформления сайта.
Классы, связанные с корректными и неверными элементами ввода, можно менять с использованием ключей errorClass и validClass. Это поможет предотвратить нежелательные конфликты, которые могут возникать при повторном использовании одного и того же названия класса. По умолчанию класс ошибки errorприсваивается каждому недопустимому входному элементу и метке. Допустимый класс valid присваивается каждому корректному входному элементу.
При этом важно помнить, что присвоение errorClass уведомлениям fail-alert удаляет класс error из недопустимых элементов. Для присвоения нескольких классов одному и тому же элементу следует использовать errorClass: «error fail-alert». То же самое касается validClass.
Если пользователь вводит корректные данные, дополнительные метки к форме не добавляются. Таким образом, классы validClass остаются присвоенными корректным входным элементам.
Дополнительный JavaScript-код используется только для присвоения классов:
$(document).ready(function() { $("#basic-form").validate({ errorClass: "error fail-alert", validClass: "valid success-alert", // ... More validation code from previous example Далее приведен CSS -код, который мы будем использовать для оформления сообщений об ошибках: label.error.fail-alert { border: 2px solid red; border-radius: 4px; line-height: 1; padding: 2px 0 6px 6px; background: #ffe6eb; } input.valid.success-alert { border: 2px solid #4CAF50; color: green; }
Помимо создания стиля для сообщений об ошибках, мы также добавим собственный стиль к допустимым входным элементам. Ниже приводится демонстрационный пример с готовым результатом.
Вы можете отключить валидацию при случайном переходе в поле с помощью клавиши или при клике мышью. Для этого надо установить параметры onfocusout, onkeyup, или onclick на false. Обратите внимание, что логическое true не является допустимым значением для этих событий. Другими словами, если вы хотите, чтобы плагин осуществлял валидацию при этих событиях – просто оставьте соответствующие ключи без изменений.
У вас также есть возможность изменить элемент, который используется для вывода ошибок. По умолчанию используется label, но при желании вы можете изменить его на em или любой другой элемент, используя параметр errorElemet. Выбранный элемент, в свою очередь, можно обернуть в другой HTML-элемент, применив параметр wrapper.
Рассмотренные варианты – наиболее типичные опции валидации данных. Кроме этих вариантов, вам могут пригодиться и некоторые другие – например, если вы захотите изменить местоположение уведомлений или сгруппировать их вместе.
Самостоятельная реализация валидации данных – очень полезный навык. Дополнительную функциональность помогут добавить готовые пакеты, созданные на основе jQuery и JavaScript.
Если вам нужна пошаговая форма, обратите внимание на пакет Timon Step Form. В состав этого набора входит множество готовых элементов форм, а также коллекция эффектов перехода. Это визуальный конструктор, для его использования не нужны навыки программирования. Имеется встроенная jQuery-валидация входных данных.
Smart Forms представляет собой полнофункциональный фреймворк для создания, как простых, так и сложных форм. В его состав входит поддержка Google reCAPTCHA, проверка номеров телефонов и многое другое. Валидация реализована на jQuery, что делает данный фреймворк отличным выбором.
Название данного пакета говорит само за себя – это инструмент для создания продвинутых форм. В поставку входит более 110 готовых форм, а сам фреймворк позволяет разработать уникальную форму самостоятельно.
Forms Plus – фреймворк для создания форм с валидацией и вычислениями. Включает в себя более 100 шаблонов для разработки форм. Поддерживает:
- ввод капчи;
- выбор даты, времени и цвета;
- группировку полей;
- скрытые поля;
- создание блоков для действий.
Мы заканчиваем обзор на фреймворке Sky Forms. Данный пакет включает в себя обширный набор стильных элементов, более 300 векторных иконок и множество цветовых схем, поддерживает любую кастомизацию. Предусматривает обработку шести состояний для элементов ввода, включая наведение курсора, фокус и так далее. Формы, созданные с помощью Sky Forms, корректно работают во всех наиболее популярных браузерах.
В этой статье мы рассмотрели, как можно вывести валидацию форм на новый уровень, используя jQuery- плагин. Реализация проверки данных на основе JavaScript предоставляет разработчику дополнительный контроль над вводом, в отличие от базовой HTML-валидации. К примеру, вы сможете без труда добавить к форме сообщения об ошибках, которые будут выводиться, если пользователь введет недопустимые данные в соответствующие поля ввода.
В то же время вы сможете определить, какие действия пользователя и для каких входных элементов плагин должен игнорировать. Я настоятельно рекомендую изучить официальную документацию к плагину и некоторые примеры его использования.
Asked
12 years, 4 months ago
Viewed
117 times
How to make where do the error message show in jquery.validate??
asked Jan 11, 2011 at 9:59
You can check out the documentation here: http://docs.jquery.com/Plugins/Validation
You define the .error style and jQuery creates the element as needed (as the next sibling to the input field) on validate.
Here is their sample style:
label.error { float: none; color: red; padding-left: .5em; vertical-align: top; }
And here is an example of an element created on error:
<label for="cname" generated="true" class="error">Please enter at least 2 characters.</label>
answered Jan 12, 2011 at 23:21
TonyTony
8081 gold badge7 silver badges21 bronze badges
Введение
Плагин jQuery Validation Plugin умеет проверять форму на корректность заполненных данных в соответствии с заданными правилами и динамически отображает ошибки пользователя.
Особенностями jQuery Validation Plugin являются
- проверка URL и E-mail;
- проверка максимальных и минимальных значений, диапазонов чисел, дат;
- автоматическое отображение ошибок.
Принцип работы с плагином
Рассмотрим работу плагина на примере простой формы ввода логина и пароля.
Пример HTML формы
<form id="loginform" action="" method="post">
Ваш логин:
<input type="text" name="login" />
Ваш пароль:
<input type="password" name="pswd" />
<input type="submit" name="enter" value="Войти" /></form>
Подключение файлов и библиотек
Подключаем библиотеки jQuery и плагин на страницу.
<script type="text/javascript" src="js/jquery-1.5.2.min.js"></script>
<script type="text/javascript" src="js/jquery.validate.min.js">
</script>
JS
Далее для HTML-формы с заданным id инициализируется плагин
($("#loginform").validate())
В атрибуте «rules» определяются поля по их имени (name=»login»), и задаются правила для конкретного поля, по которым будет происходить валидация.
В параметре «messages» задаётся текст сообщения ошибки валидации для каждого правила в отдельности.
$(document).ready(function(){
$("#loginform").validate({
rules:{
login:{
required: true,
minlength: 4,
maxlength: 16,
},
pswd:{
required: true,
minlength: 6,
maxlength: 16,
},
},
messages:{
login:{
required: "Это поле обязательно для заполнения",
minlength: "Логин должен быть минимум 4 символа",
maxlength: "Максимальное число символов - 16",
},
pswd:{
required: "Это поле обязательно для заполнения",
minlength: "Пароль должен быть минимум 6 символа",
maxlength: "Пароль должен быть максимум 16 символов",
},
}
});
});
CSS
Чтобы менять внешний вид сообщений об ошибке, нужно в CSS-файле работать с классом .error
.error{
color: red;
}
Список правил
required — поле обязательное для заполнения (true или false);
maxlength — максимальное кол-во символов (число);
minlength — минимальное кол-во символов (число);
email — проверяет корректность e-mail адреса (true или false);
url — проверяет корректность url адреса (true или false);
remote — указывается файл для проверки поля (например: check.php);
date — проверка корректности даты (true или false);
dateISO — проверка корректности даты ISO (true или false);
number — проверка на число (true или false);
digits — только цифры (true или false);
creditcard — корректность номера кредитной карты (true или false);
equalTo — равное чему-то (например, другому полю equalTo:»#pswd»);
accept — проверка на правильное расширение (accept: «xls|csv»);
rangelength — диапазон кол-ва символов, минимальное и максимальное (rangelength: [2, 6]);
range — число должно быть в диапазоне от и до (range: [13, 23]);
max — максимальное значение числа (22);
min — минимальное значение числа (11).
I’m using jQuery Validate, but I really don’t want to have any error messages whatsoever. Rather, I need to have red boxes around offending inputs/selects/etc. These red boxes were a piece of cake to add, but I still cannot remove error messages themselves. How do I disable them altogether?
ripper234
218k269 gold badges626 silver badges899 bronze badges
asked Oct 16, 2009 at 13:20
Anton GogolevAnton Gogolev
112k38 gold badges195 silver badges285 bronze badges
Use a custom error placement function (see the plugin’s options) that doesn’t append the error message to anything.
$('#form').validate({
errorPlacement: function(error,element) {
return true;
}
});
Or you could put the error messages elsewhere on the page — say in a DIV at the top of the page.
Jeff Miller
2,3751 gold badge27 silver badges41 bronze badges
answered Oct 16, 2009 at 13:35
tvanfossontvanfosson
519k97 gold badges697 silver badges794 bronze badges
3
You can override the showErrors
function:
jQuery('form').validate({
showErrors: function(errorMap, errorList) {
// Do nothing here
},
onfocusout: false,
onkeyup: false,
rules: {
email: {
required: true
}
},
messages: {
email: {
required: 'The email is required'
}
}
});
answered Oct 16, 2009 at 13:36
Darin DimitrovDarin Dimitrov
1.0m267 gold badges3270 silver badges2921 bronze badges
2
This is how I do it. Just put $.validator.messages.required = '';
before your call to initialise validate() i.e.:
$.validator.messages.required = '';
$('#formData').validate({});`
This will make it show the styles on the inputs, but no message labels!
answered May 10, 2015 at 12:41
1
Из этой статьи вы узнаете, как реализовать простую валидацию формы с помощью jQuery-плагина.
Использование jQuery-плагина для проверки данных в форме удобно по нескольким причинам. Этот способ предоставляет дополнительные опции – например, возможность выводить сообщения об ошибках и добавлять обработку различных условий проверки. Применение готового плагина также позволяет добавлять валидацию в формы без внесения видимых изменений в макет страницы. Условия проверки можно с легкостью изменять, добавлять и удалять на любом этапе разработки.
- Приступаем к работе
- Валидация первой формы
- Опции validate() метода
- Добавление правил валидации для полей ввода
- Создание собственных сообщений об ошибках
- Кастомизация сообщений об ошибках
- Дополнительные опции настройки плагина
- Формы jQuery, доступные на CodeCanyon
- Конструктор пошаговых jQuery форм Timon Step Form
- Smart Forms
- Just Forms Advanced
- Forms Plus JS
- Sky Forms
- Заключение
В этом руководстве мы будем использовать плагин для валидации форм под названием jQuery Validation Plugin. Данный плагин имеет обширный набор функций, а также позволяет добавлять пользовательские условия проверки данных.
Перед использованием расширения на странице нам нужно будет добавить к нашему проекту необходимые файлы. Таких файлов два – первый включает в себя основную функциональность плагина для проверки базовых пользовательских данных. Второй файл содержит дополнительные методы валидации для проверки номеров банковских карт, телефонов и так далее.
Добавить файлы в проект можно с помощью менеджера пакетов – Bower или npm. Кроме того, можно получить прямую CDN-ссылку на эти файлы и вставить ее в тег script на странице. Поскольку это jQuery-плагин, вам также понадобится ссылка на соответствующую библиотеку:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.0/jquery.validate.min.js"></script>
После того, как ссылки добавлены в код страницы, можно приступать к валидации любой формы с помощью метода validate.
Рассматриваемый нами плагин можно использовать без внесения каких-либо заметных изменений в разметку страницы. Единственная поправка, которую вам потребуется сделать – это добавить id или class к форме, к которой нужно подключить валидацию.
Ниже приведена разметка базовой формы, ввод данных в которой мы будем проверять с помощью jQuery-плагина.
<form id="basic-form" action="" method="post"> <p> <label for="name">Name <span>(required, at least 3 characters)</span></label> <input id="name" name="name" minlength="3" type="text" required> </p> <p> <label for="email">E-Mail <span>(required)</span></label> <input id="email" type="email" name="email" required> </p> <p> <input class="submit" type="submit" value="SUBMIT"> </p> </form>
Для проверки введенной информации не потребуется написание дополнительного кода на JavaScript. При этом плагин обеспечит вывод сообщений об ошибках под каждым текстовым полем. У нас также будет возможность оформить сообщения в любом желаемом стиле.
Для подключения валидации к этой форме надо всего лишь вставить приведенный ниже фрагмент, написанный на JavaScript, в код страницы:
$(document).ready(function() { $("#basic-form").validate(); });
Подразумевается, что вы уже добавили к проекту необходимые файлы плагина. Вставка приведенного выше фрагмента кода обеспечит надлежащую проверку формы и вывод сообщений об ошибках. Вот рабочая демонстрация плагина:
Рассматриваемая нами библиотека обеспечивает максимально дружеское отношение к пользователю: сообщения об ошибках появляются только в том случае, когда это действительно необходимо. К примеру, если вы пройдетесь по полям для ввода имени и адреса электронной почты, не вводя никаких данных, сообщения об ошибке вы не получите. Однако если вы перейдете на поле для ввода email-адреса после введения всего одной буквы в поле имени, вы увидите сообщение о том, что имя должно состоять как минимум из трех символов.
Сообщения об ошибках передаются в DOM (объектную модель документа) с помощью элемента label. Поскольку этот элемент предусматривает класс error, к сообщениям можно легко применить собственные стили. То же самое справедливо в отношении invalid input, у которого тоже имеется класс error.
В предыдущем примере мы вызывали метод validate() без передачи ему каких-либо параметров. Однако у нас есть возможность передать этому методу объект, содержащий множество параметров. Значения этих параметров будут определять способы, с помощью которых плагин будет проводить валидацию данных, выводить ошибки и так далее.
Если вы хотите, чтобы плагин игнорировал какие-то элементы в ходе проверки, вы можете передать нужный класс или селектор в метод ignore(). С этого момента плагин будет игнорировать класс при проверке данных в форме.
Вы также можете передать определенные правила в метод validate() для установления правил, в соответствии с которыми должна проверяться введенная информация. Значением параметра rules должны быть пары «ключ-значение». Ключом в каждом случае является название проверяемого элемента, а значением – набор правил для проверки информации.
Также можно добавить проверку условий данных в различных полях – с использованием ключевого слова depends («зависит от») и возвращая, соответственно, результат true («истинно») или false («ложно»). Ниже приведен пример использования простого набора правил для определения корректности введенных данных:
$(document).ready(function() { $("#basic-form").validate({ rules: { name : { required: true, minlength: 3 }, age: { required: true, number: true, min: 18 }, email: { required: true, email: true }, weight: { required: { depends: function(elem) { return $("#age").val() > 50 } }, number: true, min: 0 } } }); });
В приведенном выше фрагменте кода ключи name («имя»), age («возраст»), email и weight («вес») представляют собой названия элементов ввода input. Каждому ключу соответствует объект-значение, а пары ключей и значений определяют логику проверки информации, введенной в форму.
Такие опции валидации схожи с атрибутами, которые вы можете добавить в разметку формы. Например, установка параметра required на true сделает элемент обязательно необходимым для успешной отправки формы. Установление minlength на значение 3 обяжет пользователей вводить в поле как минимум три символа. Есть и другие встроенные методы валидации, с которыми можно ознакомиться на странице с технической документацией.
Важный момент, на который необходимо обратить внимание в приведенном выше коде – использование depends для того, чтобы сделать обязательным условием ввод веса, если возраст превышает 50 лет. Условие реализовано с помощью возвращения значения true функцией обратного вызова в том случае, если значение, введенное в поле age, превышает 50.
Рассматриваемый нами плагин позволяет создавать собственный набор сообщений об ошибках, соответствующих различным правилам проверки данных, введенных в форму. Создание сообщения об ошибке начинается с задания объекта-значения для ключа messages. Для каждого поля ввода определяется такая пара ключа и значения, и соответствующее сообщение об ошибке.
Ниже приведен пример кода, который обеспечивает вывод сообщений об ошибках при вводе неверных данных в любое из полей формы:
messages : { name: { minlength: "Name should be at least 3 characters" }, age: { required: "Please enter your age", number: "Please enter your age as a numerical value", min: "You must be at least 18 years old" }, email: { email: "The email should be in the format: abc@domain.tld" }, weight: { required: "People with age over 50 have to enter their weight", number: "Please enter your weight as a numerical value" } }
Как и правила, messages опираются на названия полей ввода. Каждое из этих полей принимает объект, состоящий из ключа и значения. Ключом является правило валидации, а значением – сообщение об ошибке, которое выводится в случае нарушения правила.
Например, поле age с помощью свойства required вызовет сообщение об ошибке, если останется незаполненным. Кроме того, если введенная информация не является числовым значением, поле вызовет ошибку number.
Как вы сможете убедиться, плагин отображает сообщения об ошибках, используемые по умолчанию в том случае, если вы не предоставили ему свои собственные. Попробуйте ввести различные данные в приведенный ниже демонстрационный образец, и вы увидите как стандартные, так и кастомные уведомления об ошибках.
Иногда возникает необходимость добавления собственных классов к элементам ввода – для использования дополнительных правил или для лучшей интеграции с существующей темой оформления сайта.
Классы, связанные с корректными и неверными элементами ввода, можно менять с использованием ключей errorClass и validClass. Это поможет предотвратить нежелательные конфликты, которые могут возникать при повторном использовании одного и того же названия класса. По умолчанию класс ошибки errorприсваивается каждому недопустимому входному элементу и метке. Допустимый класс valid присваивается каждому корректному входному элементу.
При этом важно помнить, что присвоение errorClass уведомлениям fail-alert удаляет класс error из недопустимых элементов. Для присвоения нескольких классов одному и тому же элементу следует использовать errorClass: «error fail-alert». То же самое касается validClass.
Если пользователь вводит корректные данные, дополнительные метки к форме не добавляются. Таким образом, классы validClass остаются присвоенными корректным входным элементам.
Дополнительный JavaScript-код используется только для присвоения классов:
$(document).ready(function() { $("#basic-form").validate({ errorClass: "error fail-alert", validClass: "valid success-alert", // ... More validation code from previous example Далее приведен CSS -код, который мы будем использовать для оформления сообщений об ошибках: label.error.fail-alert { border: 2px solid red; border-radius: 4px; line-height: 1; padding: 2px 0 6px 6px; background: #ffe6eb; } input.valid.success-alert { border: 2px solid #4CAF50; color: green; }
Помимо создания стиля для сообщений об ошибках, мы также добавим собственный стиль к допустимым входным элементам. Ниже приводится демонстрационный пример с готовым результатом.
Вы можете отключить валидацию при случайном переходе в поле с помощью клавиши или при клике мышью. Для этого надо установить параметры onfocusout, onkeyup, или onclick на false. Обратите внимание, что логическое true не является допустимым значением для этих событий. Другими словами, если вы хотите, чтобы плагин осуществлял валидацию при этих событиях – просто оставьте соответствующие ключи без изменений.
У вас также есть возможность изменить элемент, который используется для вывода ошибок. По умолчанию используется label, но при желании вы можете изменить его на em или любой другой элемент, используя параметр errorElemet. Выбранный элемент, в свою очередь, можно обернуть в другой HTML-элемент, применив параметр wrapper.
Рассмотренные варианты – наиболее типичные опции валидации данных. Кроме этих вариантов, вам могут пригодиться и некоторые другие – например, если вы захотите изменить местоположение уведомлений или сгруппировать их вместе.
Самостоятельная реализация валидации данных – очень полезный навык. Дополнительную функциональность помогут добавить готовые пакеты, созданные на основе jQuery и JavaScript.
Если вам нужна пошаговая форма, обратите внимание на пакет Timon Step Form. В состав этого набора входит множество готовых элементов форм, а также коллекция эффектов перехода. Это визуальный конструктор, для его использования не нужны навыки программирования. Имеется встроенная jQuery-валидация входных данных.
Smart Forms представляет собой полнофункциональный фреймворк для создания, как простых, так и сложных форм. В его состав входит поддержка Google reCAPTCHA, проверка номеров телефонов и многое другое. Валидация реализована на jQuery, что делает данный фреймворк отличным выбором.
Название данного пакета говорит само за себя – это инструмент для создания продвинутых форм. В поставку входит более 110 готовых форм, а сам фреймворк позволяет разработать уникальную форму самостоятельно.
Forms Plus – фреймворк для создания форм с валидацией и вычислениями. Включает в себя более 100 шаблонов для разработки форм. Поддерживает:
- ввод капчи;
- выбор даты, времени и цвета;
- группировку полей;
- скрытые поля;
- создание блоков для действий.
Мы заканчиваем обзор на фреймворке Sky Forms. Данный пакет включает в себя обширный набор стильных элементов, более 300 векторных иконок и множество цветовых схем, поддерживает любую кастомизацию. Предусматривает обработку шести состояний для элементов ввода, включая наведение курсора, фокус и так далее. Формы, созданные с помощью Sky Forms, корректно работают во всех наиболее популярных браузерах.
В этой статье мы рассмотрели, как можно вывести валидацию форм на новый уровень, используя jQuery- плагин. Реализация проверки данных на основе JavaScript предоставляет разработчику дополнительный контроль над вводом, в отличие от базовой HTML-валидации. К примеру, вы сможете без труда добавить к форме сообщения об ошибках, которые будут выводиться, если пользователь введет недопустимые данные в соответствующие поля ввода.
В то же время вы сможете определить, какие действия пользователя и для каких входных элементов плагин должен игнорировать. Я настоятельно рекомендую изучить официальную документацию к плагину и некоторые примеры его использования.
Есть множество статей о том, как написать свои правила для плагина jQuery validate, но мало какие из них объясняют внутреннюю работу этого плагина, что мы и обсудим в этой статье.
Это первая часть серии статей «Понимание ненавязчивой валидации Asp.NET MVC»
1. Работа плагина jQuery validate изнутри
2. Понимание Html-кода, сгенерированного ненавязчивой валидацией в ASP.Net MVC
3. Внутренняя работа плагина unobtrusive jQuery validate в ASP.Net MVC.
Что мы узнаем из этой статьи:
1. Как валидировать форму.
2. Сообщения валидации и как они работают.
3. Добавление собственных правил валидации.
4. Что именно происходит, когда мы вызываем метод валидации.
Как валидировать форму
Есть 2 основных способа, чтобы валидировать форму.
1. Использовать имена классов как правила
Как это работает
Мы добавляем к полю, которое нужно провалидировать, html атрибут «class», и это подключит валидацию.
Итак, если нам нужно, чтобы текстовое поле было обязательным мы добавляем в элемент input значение атрибута class = «required»
Html
<form action="/" method="post">
<input id="Name" type="text" name="Name" value="" class ="required" />
<input type="submit" value="Submit" />
</form>
JavaScript
$(document).ready(function() {
$('form').validate();
});
Так вы можете добавить к определенным классам несколько правил.
Плюсы и минусы такого подхода:
Работает только с правилами, которые не принимают аргументов.
Мы используем html атрибут «class» для того, для чего он не предназначен.
Но его легко установить.
Использование метода «addClassRules»
Использование функции «addClassRules» дает нам возможность использовать составное правило для одного класса.
JavaScript
$.validator.addClassRules({
name: {
required: true,
minlength: 2
},
zip: {
required: true,
digits: true,
minlength: 5,
maxlength: 5
}
});
Этот код добавляет 2 новых правила для класса «name» и «zip», и, если у нас есть элемент «input», у которого класс «zip», то к нему применяются правила: его значение является обязательным, пользователь может вводить только цифры и длина должна быть точно 5 символов.
Html
<input class="zip" type="text" name="zipCode" />
Информация: Чтобы использовать собственное сообщение для определенного правила requires в составном правиле, нам нужно придумать псевдоним для правила «required», создать новое правило с этим псевдонимом и установить для него сообщение по умолчанию.
JavaScript
$.validator.addMethod("newrequired", $.validator.methods.required, "new name is required");
Или мы можем использовать html атрибут «title», его значение будет сообщением об ошибке для составного правила.
Заметка: Валидация по имени класса работает только для правил валидации, не принимающих никаких аргументов.
2. Добавление правил как JSON объекта к методу validate()
По названию, вы должны были догадаться, что этот метод валидации принимает объект json, поэтому мы можем определить поля, которые нам нужно валидировать и правила валидации для них.
Html
<form>
<input id="something" type="text" name="userEmail" />
<input id="submit" type="submit" value="submit" />
</form>
JavaScript
$('form').validate({
rules: {
userEmail: {
email: true,
required: true
}
}
});
Заметка: Когда мы передаем объект «rules» функции «validate» ключом должно быть значение атрибута «name», а не значение «id». Как можно увидеть в примере: ключ -это «userEmail», значение атрибута «name», а у атрибута «id» другое значение.
Плюсы и минусы этого подхода:
Этот подход дает нам возможность использовать больше правил валидации, которые принимают аргументы, такие как minlength, remote, equalTo и т.д.
Отличный и настраиваемый вручную контроль над всем.
Но пользователь должен делать отдельную функцию «validate» с разными опциями для каждой формы.
Добавление или удаление динамических правил.
Добавление правил
Чтобы добавить правило мы должны использовать метод «rules» для элементов jQuery после того как форма провалидирована и передавать как первый параметр строку «add» и как второй параметр — объект правил, которые мы хотим добавить к этому элементу (также мы можем передавать объект «сообщение» для правил, которые мы добавили).
JavaScript
$('.input').rules('add', {
required: true,
messages: {
required: true
}
})
Удаление правил
Если мы хотим удалить правило или набор правил, мы передаем строку «remove», как первый параметр для метода «rules», а вторым параметром будет строка, которая содержит правила, которые мы хотим удалить, отделенные пробелом.
JavaScript
$('.input').rules('remove', 'min max');
Подход настройки вручную
JavaScript
var validator = $('form').data('validator');
validator.settings.rules.objectName = {
required: true
}
Этот подход очень полезен, если у вас есть созданные правила и объекты сообщений, вы можете расширить правила валидатора своими собственными:
JavaScript
$.extend(validator.settings, { rules: rules, messages: messages });
Сообщения валидации и как они работают
Есть три способа настроить сообщение валидации
1. Передать объект «messages» методу «validate». Объект «messages» состоит из пар ключзначение. Ключ — это значение атрибута «name» элемента. Значение — объект, содержащий каждое правило и его сообщение.
JavaScript
$('form').validate({
rules: {
userEmail: {
email: true,
required: true
}
},
messages: {
userEmail: {
email: "Please enter your email",
required: "*"
}
}
});
2. Определить значение атрибута «title» элемента
Html
<input id="Email" title="you have to enter a value" type="text" name="Email" />
3. Использовать сообщение по умолчанию. Когда определяется правило валидации, есть встроенные сообщения по умолчанию для встроенных правил.
Заметка: Эти три способа переопределяют друг друга, основываясь на приоритетности, самый приоритетный — переданный объект «messages», а наименее приоритетный — сообщение по умолчанию.
Добавление собственных правил валидации
Когда мы хотим добавить больше правил валидации, чем определены по умолчанию, мы используем метод
$.validator.addMethod
Этот метод принимает как параметры следующее:
- имя правила;
- функцию, которая осуществляет валидацию;
- сообщение по умолчанию.
Функция, которая производит валидацию, может быть с двумя или тремя параметрами
JavaScript
function validationMethod (value, element)
// OR
function validationMethod (value, element, params)
Давайте объясню эти параметры.
Значение: значение DOM элемента, который будет валидироваться
Элемент: сам элемент DOM
Параметры: то, что мы передаем как значение. Для этого примера правила валидации — это то, чему должен равняться params.
JavaScript
$('form').validate({
rules: {
firstname: {
compare: {
type: "notequal",
otherprop: "lastname"
}
}
}
});
в этом примере params будет равен {type:«notequal», otherprop: «lastname»}
Пример добавления собственного правила:
JavaScript
$.validator.addMethod("notnumbers", function(value, element) {
return !/[0-9]*/.test(value);
},
"Please don't insert numbers.")
Что именно происходит, когда мы вызываем метод «validate»
Когда мы вызваем метод validate на форме, за кулисами происходит много разных вещей:
Создается объект «validator» со всеми правилами и опциями, присоединенными к форме.
Метод «validate» присоединяет «validator» используя «$.data». Мы можем получить его выбрав форму и вызвав функцию jQuery «$.data» и передать ее «validator». Объект «vaidator» — это все метаданные для валидации, которые дают нам возможность доступа к опциям валидации в любое время жизненного цикла страницы.
Используя этот объект, мы можем изменить во время выполнения опции, которые мы передали методу валидации, такие как добавление или удаление правил, изменение поведения, если поле валидное или невалидное, или даже введение селектора игнорирования.
JavaScript
//getting the validator
var validator = $("selector").data("validator")
Заметка: Когда вы вызываете метод «validate» на форме, которая уже провалидирована, он вернет только объект «validator», используется также $.data, и все предыдущие опции, переданные методом «validate», будут стерты.
JavaScript
var validator = $(".selector").validate(/* rules will be omitted */)
Присоединение событий формы
Что произойдет, когда мы нажмем submit(отправить форму), и в форме будет введено неверное значение для поля, к которому мы присоединили валидацию. Если одно из полей невалидное, то плагин валидации будет присматриваться к нему более пристально, чтобы проверять, валидное оно или нет, по событиям на этом поле.
Сообытия формы, на которые подписывается плагин — это «click», «focusin», «focusout», «keyup», «submit».
Заметка: Вы можете отключить валидацию по определенным событиям, передав их как ключи в методе validate, и false в качестве значений.
JavaScript
$(".selector").validate({
onfocusout: false,
onkeyup: false,
onclick: false,
onsubmit: false
});
Перевод статьи Nadeem Khedr «How the jQuery validate plugin works internally». nadeemkhedr.wordpress.com/2012/08/12/how-the-jquery-validate-plugin-works-internally/#goCallValidate
update 01.06.13: добавлены ссылки на другие посты серии
Введение
Плагин jQuery Validation Plugin умеет проверять форму на корректность заполненных данных в соответствии с заданными правилами и динамически отображает ошибки пользователя.
Особенностями jQuery Validation Plugin являются
- проверка URL и E-mail;
- проверка максимальных и минимальных значений, диапазонов чисел, дат;
- автоматическое отображение ошибок.
Принцип работы с плагином
Рассмотрим работу плагина на примере простой формы ввода логина и пароля.
Пример HTML формы
<form id="loginform" action="" method="post">
Ваш логин:
<input type="text" name="login" />
Ваш пароль:
<input type="password" name="pswd" />
<input type="submit" name="enter" value="Войти" /></form>
Подключение файлов и библиотек
Подключаем библиотеки jQuery и плагин на страницу.
<script type="text/javascript" src="js/jquery-1.5.2.min.js"></script>
<script type="text/javascript" src="js/jquery.validate.min.js">
</script>
JS
Далее для HTML-формы с заданным id инициализируется плагин
($("#loginform").validate())
В атрибуте «rules» определяются поля по их имени (name=»login»), и задаются правила для конкретного поля, по которым будет происходить валидация.
В параметре «messages» задаётся текст сообщения ошибки валидации для каждого правила в отдельности.
$(document).ready(function(){
$("#loginform").validate({
rules:{
login:{
required: true,
minlength: 4,
maxlength: 16,
},
pswd:{
required: true,
minlength: 6,
maxlength: 16,
},
},
messages:{
login:{
required: "Это поле обязательно для заполнения",
minlength: "Логин должен быть минимум 4 символа",
maxlength: "Максимальное число символов - 16",
},
pswd:{
required: "Это поле обязательно для заполнения",
minlength: "Пароль должен быть минимум 6 символа",
maxlength: "Пароль должен быть максимум 16 символов",
},
}
});
});
CSS
Чтобы менять внешний вид сообщений об ошибке, нужно в CSS-файле работать с классом .error
.error{
color: red;
}
Список правил
required — поле обязательное для заполнения (true или false);
maxlength — максимальное кол-во символов (число);
minlength — минимальное кол-во символов (число);
email — проверяет корректность e-mail адреса (true или false);
url — проверяет корректность url адреса (true или false);
remote — указывается файл для проверки поля (например: check.php);
date — проверка корректности даты (true или false);
dateISO — проверка корректности даты ISO (true или false);
number — проверка на число (true или false);
digits — только цифры (true или false);
creditcard — корректность номера кредитной карты (true или false);
equalTo — равное чему-то (например, другому полю equalTo:»#pswd»);
accept — проверка на правильное расширение (accept: «xls|csv»);
rangelength — диапазон кол-ва символов, минимальное и максимальное (rangelength: [2, 6]);
range — число должно быть в диапазоне от и до (range: [13, 23]);
max — максимальное значение числа (22);
min — минимальное значение числа (11).
jQuery Validation Plugin — Form validation made easy
The jQuery Validation Plugin provides drop-in validation for your existing forms, while making all kinds of customizations to fit your application really easy.
Getting Started
Downloading the prebuilt files
Prebuilt files can be downloaded from https://jqueryvalidation.org/
Downloading the latest changes
The unreleased development files can be obtained by:
- Downloading or Forking this repository
- Setup the build
- Run
grunt
to create the built files in the «dist» directory
Including it on your page
Include jQuery and the plugin on a page. Then select a form to validate and call the validate
method.
<form> <input required> </form> <script src="jquery.js"></script> <script src="jquery.validate.js"></script> <script> $("form").validate(); </script>
Alternatively include jQuery and the plugin via requirejs in your module.
define(["jquery", "jquery.validate"], function( $ ) { $("form").validate(); });
For more information on how to setup a rules and customizations, check the documentation.
Reporting issues and contributing code
See the Contributing Guidelines for details.
IMPORTANT NOTE ABOUT EMAIL VALIDATION. As of version 1.12.0 this plugin is using the same regular expression that the HTML5 specification suggests for browsers to use. We will follow their lead and use the same check. If you think the specification is wrong, please report the issue to them. If you have different requirements, consider using a custom method.
In case you need to adjust the built-in validation regular expression patterns, please follow the documentation.
IMPORTANT NOTE ABOUT REQUIRED METHOD. As of version 1.14.0 this plugin stops trimming white spaces from the value of the attached element. If you want to achieve the same result, you can use the normalizer
that can be used to transform the value of an element before validation. This feature was available since v1.15.0
. In other words, you can do something like this:
$("#myForm").validate({ rules: { username: { required: true, // Using the normalizer to trim the value of the element // before validating it. // // The value of `this` inside the `normalizer` is the corresponding // DOMElement. In this example, `this` references the `username` element. normalizer: function(value) { return $.trim(value); } } } });
Accessibility
For an invalid field, the default output for the jQuery Validation Plugin is an error message in a <label>
element. This results in two <label>
elements pointing to a single input field using the for
attribute. While this is valid HTML, it has inconsistent support across screen readers.
For greater screen reader support in your form’s validation, use the errorElement
parameter in the validate()
method. This option outputs the error in an element of your choice and automatically adds ARIA attributes to the HTML that help with screen reader support.
aria-describedby
is added to the input field and it is programmatically tied to the error element chosen in the errorElement
parameter.
$("#myform").validate({ errorElement: "span" });
<label for="name">Name</label> <input id="name" aria-describedby="unique-id-here"> <span class="error" id="unique-id-here">This field is required</span>
Learn more about errorElement
License
Copyright © Jörn Zaefferer
Licensed under the MIT license.
validate( [options ] )Returns: Validator
Description: Validates the selected form.
-
validate( [options ] )
-
options
-
debug (default:
false
)Enables debug mode. If true, the form is not submitted and certain errors are displayed on the console (will check if a
window.console
property exists). Try to enable when a form is just submitted instead of validation stopping the submit.Example: Prevents the form from submitting and tries to help setting up the validation with warnings about missing methods and other debug messages.
-
submitHandler (default:
native form submit
)Callback for handling the actual submit when the form is valid. Gets the form and the submit event as the only arguments. Replaces the default submit. The right place to submit a form via Ajax after it is validated.
Example: Submits the form via Ajax, using jQuery Form plugin, when valid.
1
2
3
4
5
submitHandler: function(form) {
Example: Use submitHandler to process something and then using the default submit. Note that «form» refers to a DOM element, this way the validation isn’t triggered again.
1
2
3
4
5
6
submitHandler: function(form) {
// do other things for a valid form
The callback gets passed two arguments:
-
form
The form currently being validated, as a DOMElement.
-
event
The submit event instance.
-
-
invalidHandler
Callback for custom code when an invalid form is submitted. Called with an event object as the first argument, and the validator as the second.
Example: Displays a message above the form, indicating how many fields are invalid when the user tries to submit an invalid form.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
invalidHandler: function(event, validator) {
// 'this' refers to the form
var errors = validator.numberOfInvalids();
var message = errors == 1
? 'You missed 1 field. It has been highlighted'
: 'You missed ' + errors + ' fields. They have been highlighted';
$("div.error span").html(message);
The callback gets passed two arguments:
-
event
A custom event object, since this function is bound as an event handler.
-
validator
The validator instance for the current form.
-
-
ignore (default:
":hidden"
)Elements to ignore when validating, simply filtering them out. jQuery’s not-method is used, therefore everything that is accepted by not() can be passed as this option. Inputs of type submit and reset are always ignored, so are disabled elements.
Example: Ignores all elements with the class «ignore» when validating.
-
rules (default:
rules are read from markup (classes, attributes, data)
)Key/value pairs defining custom rules. Key is the name of an element (or a group of checkboxes/radio buttons), value is an object consisting of rule/parameter pairs or a plain String. Can be combined with class/attribute/data rules. Each rule can be specified as having a depends-property to apply the rule only in certain conditions. See the second example below for details.
Example: Specifies a name element as required and an email element as required (using the shortcut for a single rule) and a valid email address (using another object literal).
1
2
3
4
5
6
7
8
9
10
11
// simple rule, converted to {required:true}
Example: Specifies a contact element as required and as email address, the latter depending on a checkbox being checked for contact via email.
1
2
3
4
5
6
7
8
9
10
11
12
depends: function(element) {
return $("#contactform_email").is(":checked");
Example: Configure a rule that requires a parameter, along with a
depends
callback.1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// at least 15€ when bonus material is included
// min needs a parameter passed to it
depends: function(element) {
return $("#bonus-material").is(":checked");
-
messages (default:
the default message for the method used
)Key/value pairs defining custom messages. Key is the name of an element, value the message to display for that element. Instead of a plain message, another map with specific messages for each rule can be used. Overrides the title attribute of an element or the default message for the method (in that order). Each message can be a String or a Callback. The callback is called in the scope of the validator, with the rule’s parameters as the first argument and the element as the second, and must return a String to display as the message.
Example: Specifies a name element as required and an email element as required and a valid email address. A single message is specified for the name element, and two messages for email.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
name: "Please specify your name",
required: "We need your email address to contact you",
Example: Validates the name-field as required and having at least two characters. Provides a callback message using jQuery.validator.format to avoid having to specify the parameter in two places.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
required: "We need your email address to contact you",
minlength: jQuery.validator.format("At least {0} characters required!")
-
groups
Specify grouping of error messages. A group consists of an arbitrary group name as the key and a space separated list of element names as the value. Use errorPlacement to control where the group message is placed.
Example: Use a table layout for the form, placing error messags in the next cell after the input.
1
2
3
4
5
6
7
8
9
10
11
12
errorPlacement: function(error, element) {
if (element.attr("name") == "fname" || element.attr("name") == "lname" ) {
error.insertAfter("#lastname");
error.insertAfter(element);
-
normalizer
Prepares/transforms the elements value for validation.
See normalizer docs for more details. -
onsubmit (default:
true
)Validate the form on submit. Set to false to use only other events for validation.
Example: Disables onsubmit validation, allowing the user to submit whatever he wants, while still validating on keyup/blur/click events (if not specified otherwise).
-
onfocusout
Validate elements (except checkboxes/radio buttons) on blur. If nothing is entered, all rules are skipped, except when the field was already marked as invalid.
Set to a Function to decide for yourself when to run validation.
A boolean true is not a valid value.
Example: Disables focusout validation.
The callback gets passed two arguments:
-
element
The element currently being validated, as a DOMElement.
-
event
The event object for this focusout event.
-
-
onkeyup
Validate elements on keyup. As long as the field is not marked as invalid, nothing happens. Otherwise, all rules are checked on each key up event. Set to false to disable.
Set to a Function to decide for yourself when to run validation.
A boolean true is not a valid value.
Example: Disables onkeyup validation.
The callback gets passed two arguments:
-
element
The element currently being validated, as a DOMElement.
-
event
The event object for this keyup event.
-
-
onclick
Validate checkboxes, radio buttons, and select elements on click. Set to false to disable.
Set to a Function to decide for yourself when to run validation.
A boolean true is not a valid value.
Example: Disables onclick validation of checkboxes, radio buttons, and select elements.
The callback gets passed two arguments:
-
element
The element currently being validated, as a DOMElement.
-
event
The event object for this click event.
-
-
focusInvalid (default:
true
)Focus the last active or first invalid element on submit via validator.focusInvalid(). The last active element is the one that had focus when the form was submitted, avoiding stealing its focus. If there was no element focused, the first one in the form gets it, unless this option is turned off.
Example: Disables focusing of invalid elements.
-
focusCleanup (default:
false
)If enabled, removes the errorClass from the invalid elements and hides all error messages whenever the element is focused. Avoid combination with focusInvalid.
Example: Enables cleanup when focusing elements, removing the error class and hiding error messages when an element is focused.
-
errorClass (default:
"error"
)Use this class to create error labels, to look for existing error labels and to add it to invalid elements.
Example: Sets the error class to «invalid».
-
validClass (default:
"valid"
)This class is added to an element after it was validated and considered valid.
Example: Sets the valid class to «success».
-
errorElement (default:
"label"
)Use this element type to create error messages and to look for existing error messages. The default, «label», has the advantage of creating a meaningful link between error message and invalid field using the for attribute (which is always used, regardless of element type).
Example: Sets the error element to «em».
-
wrapper (default:
window
)Wrap error labels with the specified element. Useful in combination with errorLabelContainer to create a list of error messages.
Example: Wrap each error element with a list item, useful when using an ordered or unordered list as the error container.
-
errorLabelContainer
Hide and show this container when validating.
Example: All error labels are displayed inside an unordered list with the ID «messageBox», as specified by the selector passed as errorContainer option. All error elements are wrapped inside a li element, to create a list of messages.
1
2
3
4
5
errorLabelContainer: "#messageBox",
submitHandler: function() { alert("Submitted!") }
-
errorContainer
Hide and show this container when validating.
Example: Uses an additonal container for error messages. The elements given as the errorContainer are all shown and hidden when errors occur. However, the error labels themselves are added to the element(s) given as errorLabelContainer, here an unordered list. Therefore the error labels are also wrapped into li elements (wrapper option).
1
2
3
4
5
6
errorContainer: "#messageBox1, #messageBox2",
errorLabelContainer: "#messageBox1 ul",
wrapper: "li", debug:true,
submitHandler: function() { alert("Submitted!") }
-
showErrors
A custom message display handler. Gets the map of errors as the first argument and an array of errors as the second, called in the context of the validator object. The arguments contain only those elements currently validated, which can be a single element when doing validation on focusout or keyup. You can trigger (in addition to your own messages) the default behaviour by calling this.defaultShowErrors().
Example: Update the number of invalid elements each time an error is displayed. Delegates to the default implementation for the actual error display.
1
2
3
4
5
6
7
8
showErrors: function(errorMap, errorList) {
$("#summary").html("Your form contains "
+ this.numberOfInvalids()
+ " errors, see details below.");
this.defaultShowErrors();
The callback gets passed two arguments:
-
errorMap
Key/value pairs, where the key refers to the name of an input field, values the message to be displayed for that input.
-
errorList
An array for all currently validated elements. Contains objects with the following two properties:
-
message
The message to be displayed for an input.
-
element
The DOMElement for this entry.
-
-
-
errorPlacement (default:
Places the error label after the invalid element
)Customize placement of created error labels. First argument: The created error label as a jQuery object. Second argument: The invalid element as a jQuery object.
Example: Use a table layout for the form, placing error messages in the next cell after the input.
1
2
3
4
5
errorPlacement: function(error, element) {
error.appendTo( element.parent("td").next("td") );
The callback gets passed two arguments:
-
error
The error label to insert into the DOM.
-
element
The validated input, for relative positioning.
-
-
success
If specified, the error label is displayed to show a valid element. If a String is given, it is added as a class to the label. If a Function is given, it is called with the label (as a jQuery object) and the validated input (as a DOM element). The label can be used to add a text like «ok!».
Example: Add a class «valid» to valid elements, styled via CSS.
1
2
3
4
submitHandler: function() { alert("Submitted!") }
Example: Add a class «valid» to valid elements, styled via CSS, and add the text «Ok!».
1
2
3
4
5
6
success: function(label) {
label.addClass("valid").text("Ok!")
submitHandler: function() { alert("Submitted!") }
The callback gets passed two arguments:
-
label
The error label. Use to add a class or replace the text content.
-
element
The element currently being validated, as a DOMElement.
-
-
highlight (default:
Adds errorClass (see the option) to the element
)How to highlight invalid fields. Override to decide which fields and how to highlight.
Example: Highlights an invalid element by fading it out and in again.
1
2
3
4
5
6
7
highlight: function(element, errorClass) {
$(element).fadeOut(function() {
Example: Adds the error class to both the invalid element and its label
1
2
3
4
5
6
7
8
9
10
11
12
highlight: function(element, errorClass, validClass) {
$(element).addClass(errorClass).removeClass(validClass);
$(element.form).find("label[for=" + element.id + "]")
unhighlight: function(element, errorClass, validClass) {
$(element).removeClass(errorClass).addClass(validClass);
$(element.form).find("label[for=" + element.id + "]")
.removeClass(errorClass);
The callback gets passed three arguments:
-
element
The invalid DOM element, usually an
input
. -
errorClass
Current value of the
errorClass
option. -
validClass
Current value of the
validClass
option.
-
-
unhighlight (default:
Removes the errorClass
)Called to revert changes made by option highlight, same arguments as highlight.
-
ignoreTitle (default:
false
)Set to skip reading messages from the title attribute, helps to avoid issues with Google Toolbar; default is false for compability, the message-from-title is likely to be completely removed in a future release.
Example: Configure the plugin to ignore title attributes on validated elements when looking for messages.
-
-
This method sets up event handlers for submit, focus, keyup, blur and click to trigger validation of the entire form or individual elements. Each one can be disabled, see the onxxx options (onsubmit, onfocusout, onkeyup, onclick). focusInvalid focuses elements when submitting an invalid form.
Use the debug option to ease setting up validation rules, it always prevents the default submit, even when script errors occur.
Use submitHandler to implement your own form submit, eg. via Ajax. Use invalidHandler to react when an invalid form is submitted.
Use rules and messages to specify which elements to validate, and how. See rules() for more details about specifying validation rules.
Use errorClass, errorElement, wrapper, errorLabelContainer, errorContainer, showErrors, success, errorPlacement, highlight, unhighlight, and ignoreTitle to control how invalid elements and error messages are displayed.
От автора: из этого руководства Вы узнаете, как настроить базовую валидацию формы с помощью jQuery – на примере формы регистрации.
Мы будем использовать для валидации формы jQuery Validation Plugin. Основным принципом этого плагина является определение правил валидации и сообщения об ошибках для элементов HTML в JavaScript. Вот онлайн демонстрация того, что мы собираемся создать:
Шаг 1: Включите jQuery
Во-первых, нам нужно включить библиотеку jQuery. jQuery Validation Plugin был протестирован до версии jQuery 3.1.1, но демонстрационная версия в этой статье прекрасно работает с последней версией 3.4.1.
Вы можете использовать любой из следующих вариантов загрузки:
JavaScript. Быстрый старт
Изучите основы JavaScript на практическом примере по созданию веб-приложения
Узнать подробнее
Загрузите его с jquery.com
Загрузите его с помощью Bower: $ bower install jquery
Загрузите его, используя npm или Yarn: $ npm install jquery или yarn add jquery
Используйте CDN: //ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js
Создайте новый HTML-файл с именем index.html и включите jQuery перед закрывающим тегом body:
<!— Change the «src» attribute according to your installation path —> <script src=«vendor/jquery/dist/jquery.min.js»></script> |
Шаг 2. Включите jQuery Validation Plugin
Выберите между:
Загрузкой из репозитория плагина на github
Загрузите его с помощью Bower: $ bower install jquery-validation
Загрузите его, используя npm: npm i jquery-validation
NuGet: Install-Package jQuery.Validation
Используйте CDN: //cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.1/jquery.validate.min.js
Включите плагин после jQuery:
<!— Change the «src» attribute according to your installation path —> <script src=«vendor/jquery-validation/dist/jquery.validate.min.js»></script> |
Шаг 3. Создайте HTML-форму
Для регистрации мы хотим получить следующую информацию о пользователе:
Имя
JavaScript. Быстрый старт
Изучите основы JavaScript на практическом примере по созданию веб-приложения
Узнать подробнее
Фамилия
Электронная почта
Пароль
Итак, давайте создадим форму, содержащую эти поля ввода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<div class=«container»> <h2>Registration</h2> <form action=«» name=«registration»> <label for=«firstname»>First Name</label> <input type=«text» name=«firstname» id=«firstname» placeholder=«John»/> <label for=«lastname»>Last Name</label> <input type=«text» name=«lastname» id=«lastname» placeholder=«Doe»/> <label for=«email»>Email</label> <input type=«email» name=«email» id=«email» placeholder=«john@doe.com»/> <label for=«password»>Password</label> <input type=«password» name=«password» id=«password» placeholder=«●●●●●»/> <button type=«submit»>Register</button> </form> </div> |
При интеграции этого в реальное приложение, не забудьте заполнить атрибут action, чтобы данные формы отправлялись к нужной точке назначения.
Шаг 4. Стили формы
Создайте новый файл css/styles.css и включите его в разделе head HTML-файла:
<link rel=«stylesheet» href=«css/style.css»/> |
Скопируйте следующие стили во вновь созданный файл:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
@import url(«//fonts.googleapis.com/css?family=Open+Sans»); /* Styles */ * { margin: 0; padding: 0; } body { font-family: «Open Sans»; font-size: 14px; } .container { width: 500px; margin: 25px auto; } form { padding: 20px; background: #2c3e50; color: #fff; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; } form label, form input, form button { border: 0; margin-bottom: 3px; display: block; width: 100%; } form input { height: 25px; line-height: 25px; background: #fff; color: #000; padding: 0 6px; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; } form button { height: 30px; line-height: 30px; background: #e67e22; color: #fff; margin-top: 10px; cursor: pointer; } form .error { color: #ff0000; } |
Обратите внимание на стили для .error, которые будут использоваться для сообщений об ошибках валидации.
Шаг 5. Создайте правила валидации
Наконец, нам нужно инициализировать плагин валидации формы. Создайте новый файл js/form-validation.js и добавьте ссылку на него после тега script плагина:
<script src=«js/form-validation.js»></script> |
Скопируйте следующий код во вновь созданный файл:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
// Wait for the DOM to be ready $(function() { // Initialize form validation on the registration form. // It has the name attribute «registration» $(«form[name=’registration’]»).validate({ // Specify validation rules rules: { // The key name on the left side is the name attribute // of an input field. Validation rules are defined // on the right side firstname: «required», lastname: «required», email: { required: true, // Specify that email should be validated // by the built-in «email» rule email: true }, password: { required: true, minlength: 5 } }, // Specify validation error messages messages: { firstname: «Please enter your firstname», lastname: «Please enter your lastname», password: { required: «Please provide a password», minlength: «Your password must be at least 5 characters long» }, email: «Please enter a valid email address» }, // Make sure the form is submitted to the destination defined // in the «action» attribute of the form when valid submitHandler: function(form) { form.submit(); } }); }); |
Заключение
Вот и все, вы это сделали! Теперь у вас есть понимание, как настроить валидацию формы с помощью jQuery. Помните, что это не заменяет валидацию на стороне сервера. Злоумышленник все еще может манипулировать или обходить правила валидации (например, с помощью инструментов разработчика браузера).
Автор: Maria Antonietta Perna
Источник: //www.sitepoint.com
Редакция: Команда webformyself.
JavaScript. Быстрый старт
Изучите основы JavaScript на практическом примере по созданию веб-приложения
Узнать подробнее
Изучите jQuery с нуля!
Смотреть
Improve Article
Save Article
Improve Article
Save Article
Form validation is a process of confirming the relevant information entered by the user in the input field. Here we will be validating a simple form that consists of a username, password and a confirmed password using jQuery.
Prerequisites: You must be aware of the basics of HTML, CSS, JavaScript, and jQuery.
Approach:
- First, you need to create an index.html file consisting of an HTML form with username, email, password, and confirm password as input fields. We will use Bootstrap 4 to use Bootstrap’s form controls. At the bottom of the <body> tag, include the “app.js” file having jQuery code for form validation.
- Create an app.js file that validates the whole form as given below in the code.
- In the app.js file, when the document is ready, hide all the error messages. Perform the validation task for all the input fields such as username, email, password, and confirm password.
index.html: The following HTML code demonstrates the form design for user input.
HTML
<!DOCTYPE html>
<
html
>
<
head
>
4.0.0/css/bootstrap.min.css">
jquery/3.3.1/jquery.min.js">
</
script
>
popper.js/1.12.9/umd/popper.min.js">
</
script
>
4.0.0/js/bootstrap.min.js">
</
script
>
</
head
>
<
body
><
br
>
<
h1
class
=
"text-center text-success"
>
Welcome to GeeksforGeeks
</
h1
>
<
p
class
=
"text-center"
>
FORM VALIDATION USING JQUERY
</
p
>
<
div
class
=
"container"
>
<
div
class="col-lg-8
m-auto d-block">
<
form
>
<
div
class
=
"form-group"
>
<
label
for
=
"user"
>
Username:
</
label
>
<
input
type
=
"text"
name
=
"username"
id
=
"usernames"
class
=
"form-control"
>
<
h5
id
=
"usercheck"
style
=
"color: red;"
>
**Username is missing
</
h5
>
</
div
>
<
div
class
=
"form-group"
>
<
label
for
=
"user"
>
Email:
</
label
>
<
input
type
=
"email"
name
=
"email"
id
=
"email"
required
class
=
"form-control"
>
<
small
id
=
"emailvalid"
class="form-text
text-muted invalid-feedback">
Your email must be a valid email
</
small
>
</
div
>
<
div
class
=
"form-group"
>
<
label
for
=
"password"
>
Password:
</
label
>
<
input
type
=
"password"
name
=
"pass"
id
=
"password"
class
=
"form-control"
>
<
h5
id
=
"passcheck"
style
=
"color: red;"
>
**Please Fill the password
</
h5
>
</
div
>
<
div
class
=
"form-group"
>
<
label
for
=
"conpassword"
>
Confirm Password:
</
label
>
<
input
type
=
"password"
name
=
"username"
id
=
"conpassword"
class
=
"form-control"
>
<
h5
id
=
"conpasscheck"
style
=
"color: red;"
>
**Password didn't match
</
h5
>
</
div
>
<
input
type
=
"submit"
id
=
"submitbtn"
value
=
"Submit"
class
=
"btn btn-primary"
>
</
form
>
</
div
>
</
div
>
<
script
src
=
"app.js"
></
script
>
</
body
>
</
html
>
app.js: The following jQuery code for validation is used in the above HTML file.
Javascript
$(document).ready(
function
() {
$(
"#usercheck"
).hide();
let usernameError =
true
;
$(
"#usernames"
).keyup(
function
() {
validateUsername();
});
function
validateUsername() {
let usernameValue = $(
"#usernames"
).val();
if
(usernameValue.length ==
""
) {
$(
"#usercheck"
).show();
usernameError =
false
;
return
false
;
}
else
if
(usernameValue.length < 3 || usernameValue.length > 10) {
$(
"#usercheck"
).show();
$(
"#usercheck"
).html(
"**length of username must be between 3 and 10"
);
usernameError =
false
;
return
false
;
}
else
{
$(
"#usercheck"
).hide();
}
}
const email = document.getElementById(
"email"
);
email.addEventListener(
"blur"
, () => {
let regex = /^([_-.0-9a-zA-Z]+)@([_-.0-9a-zA-Z]+).([a-zA-Z]){2,7}$/;
let s = email.value;
if
(regex.test(s)) {
email.classList.remove(
"is-invalid"
);
emailError =
true
;
}
else
{
email.classList.add(
"is-invalid"
);
emailError =
false
;
}
});
$(
"#passcheck"
).hide();
let passwordError =
true
;
$(
"#password"
).keyup(
function
() {
validatePassword();
});
function
validatePassword() {
let passwordValue = $(
"#password"
).val();
if
(passwordValue.length ==
""
) {
$(
"#passcheck"
).show();
passwordError =
false
;
return
false
;
}
if
(passwordValue.length < 3 || passwordValue.length > 10) {
$(
"#passcheck"
).show();
$(
"#passcheck"
).html(
"**length of your password must be between 3 and 10"
);
$(
"#passcheck"
).css(
"color"
,
"red"
);
passwordError =
false
;
return
false
;
}
else
{
$(
"#passcheck"
).hide();
}
}
$(
"#conpasscheck"
).hide();
let confirmPasswordError =
true
;
$(
"#conpassword"
).keyup(
function
() {
validateConfirmPassword();
});
function
validateConfirmPassword() {
let confirmPasswordValue = $(
"#conpassword"
).val();
let passwordValue = $(
"#password"
).val();
if
(passwordValue != confirmPasswordValue) {
$(
"#conpasscheck"
).show();
$(
"#conpasscheck"
).html(
"**Password didn't Match"
);
$(
"#conpasscheck"
).css(
"color"
,
"red"
);
confirmPasswordError =
false
;
return
false
;
}
else
{
$(
"#conpasscheck"
).hide();
}
}
$(
"#submitbtn"
).click(
function
() {
validateUsername();
validatePassword();
validateConfirmPassword();
validateEmail();
if
(
usernameError ==
true
&&
passwordError ==
true
&&
confirmPasswordError ==
true
&&
emailError ==
true
) {
return
true
;
}
else
{
return
false
;
}
});
});
Output:
Below is the output generated when the user directly hits the submit button.
Below is the output generated when the user enters invalid details in the form.
Validation using inbuilt jQuery validation plugin
In this part, you get to know about the inbuilt validation method of jQuery. Create an index.html file and copy the following code:
Example 1 :
HTML
<!doctype html>
<
html
>
<
head
>
<
meta
charset
=
"utf-8"
>
<
title
>Comment Form</
title
>
<
script
>
// user have to use id for form and call validate method
$("#commonForm").validate();
</
script
>
</
head
>
<
body
>
<
form
class
=
"cmxform"
id
=
"commonForm"
method
=
"get"
action
=
"form-handler.html"
autocomplete
=
"off"
>
<
fieldset
>
<
legend
>GFG Form</
legend
>
<
p
>
<
label
for
=
"cname"
>Name <
span
>(required at least 2 character)</
span
></
label
>
<
input
id
=
"cname"
name
=
"name"
minlength
=
"2"
type
=
"text"
required></
input
>
</
p
>
<
p
>
<
label
for
=
"cemail"
>Email <
span
>(required, won't be published)</
span
></
label
>
<
input
id
=
"cemail"
type
=
"email"
name
=
"email"
required></
input
>
</
p
>
<
p
>
<
label
for
=
"curl"
>URL <
span
>(Optional)</
span
></
label
>
<
input
id
=
"curl"
type
=
"url"
name
=
"url"
></
input
>
</
p
>
<
p
>
<
label
for
=
"ccomment"
>Your comment<
span
>(required)</
span
></
label
>
<
textarea
id
=
"ccomment"
name
=
"comment"
required></
textarea
>
</
p
>
<
p
>
<
input
class
=
"submit"
type
=
"submit"
value
=
"submit"
>
</
p
>
</
fieldset
>
</
form
>
</
body
>
</
html
>
Note: Run the above code by creating a .html file using a text editor.
Output:
If we do not fill the email section:
If we do not fill the comment section:
Example 2 : (Important)
The jQuery plugin makes simpler the code of validation for the clientside.
The plugin comes bundled with a useful set of validation methods, including URL and email validation while providing an API to write your own methods.
Follow the below example which makes more clarifications regarding it.
HTML
<!doctype html>
<
html
>
<
head
>
<
meta
charset
=
"utf-8"
>
<
title
>Comment Form</
title
>
<
script
>
$().ready(function () {
$("#signupForm").validate({
// in 'rules' user have to specify all the constraints for respective fields
rules: {
firstname: "required",
lastname: "required",
username: {
required: true,
minlength: 2 //for length of lastname
},
password: {
required: true,
minlength: 5
},
confirm_password: {
required: true,
minlength: 5,
equalTo: "#password" //for checking both passwords are same or not
},
email: {
required: true,
email: true
},
agree: "required"
},
// in 'messages' user have to specify message as per rules
messages: {
firstname: " Please enter your firstname",
lastname: " Please enter your lastname",
username: {
required: " Please enter a username",
minlength: " Your username must consist of at least 2 characters"
},
password: {
required: " Please enter a password",
minlength: " Your password must be consist of at least 5 characters"
},
confirm_password: {
required: " Please enter a password",
minlength: " Your password must be consist of at least 5 characters",
equalTo: " Please enter the same password as above"
},
agree: "Please accept our policy"
}
});
});
</
script
>
</
head
>
<
body
>
<
form
class
=
"cmxform"
id
=
"signupForm"
method
=
"get"
action
=
"form-handler.html"
autocomplete
=
"off"
>
<
fieldset
>
<
legend
>GFG sign-up Form</
legend
>
<
p
>
<
label
for
=
"firstname"
>Firstname</
label
>
<
input
id
=
"firstname"
name
=
"firstname"
type
=
"text"
></
input
>
</
p
>
<
p
>
<
label
for
=
"lastname"
>Lastname</
label
>
<
input
id
=
"lastname"
name
=
"lastname"
type
=
"text"
></
input
>
</
p
>
<
p
>
<
label
for
=
"username"
>Username</
label
>
<
input
id
=
"username"
name
=
"username"
type
=
"text"
></
input
>
</
p
>
<
p
>
<
label
for
=
"password"
>Password</
label
>
<
input
id
=
"password"
name
=
"password"
type
=
"password"
></
input
>
</
p
>
<
p
>
<
label
for
=
"confirm_password"
>Confirm password</
label
>
<
input
id
=
"confirm_password"
name
=
"confirm_password"
type
=
"password"
></
input
>
</
p
>
<
p
>
<
label
for
=
"email"
>Email</
label
>
<
input
id
=
"email"
name
=
"email"
type
=
"email"
></
input
>
</
p
>
<
p
>
<
label
for
=
"agree"
>Please agree to our policy</
label
>
<
input
id
=
"agree"
name
=
"agree"
type
=
"checkbox"
></
input
>
</
p
>
<
p
>
<
input
class
=
"submit"
type
=
"submit"
value
=
"submit"
>
</
p
>
</
fieldset
>
</
form
>
</
body
>
</
html
>
Note: Run the above code by creating a .html file using a text editor.
Output:
jQuery is an open-source JavaScript library that simplifies the interactions between an HTML/CSS document, It is widely famous for its philosophy of “Write less, do more”.
You can learn jQuery from the ground up by following this jQuery Tutorial and jQuery Examples.
Vote for difficulty
Current difficulty :
Basic