Сообщение об ошибке jquery

This function basically generates unique random API key’s and in case if it doesn’t then pop-up dialog box with error message appears

In View Page:

<div class="form-group required">
    <label class="col-sm-2 control-label" for="input-storename"><?php echo $entry_storename; ?></label>
    <div class="col-sm-6">
        <input type="text" class="apivalue"  id="api_text" readonly name="API" value="<?php echo strtoupper(substr(md5(rand().microtime()), 0, 12)); ?>" class="form-control" />                                                                    
        <button type="button" class="changeKey1" value="Refresh">Re-Generate</button>
    </div>
</div>

<script>
$(document).ready(function(){
    $('.changeKey1').click(function(){
          debugger;
        $.ajax({
                url  :"index.php?route=account/apiaccess/regenerate",
                type :'POST',
                dataType: "json",
                async:false,
                contentType: "application/json; charset=utf-8",
                success: function(data){
                  var result =  data.sync_id.toUpperCase();
                        if(result){
                          $('#api_text').val(result);
                        }
                  debugger;
                  },
                error: function(xhr, ajaxOptions, thrownError) {
                  alert(thrownError + "rn" + xhr.statusText + "rn" + xhr.responseText);
                }

        });
    });
  });
</script>

From Controller:

public function regenerate(){
    $json = array();
    $api_key = substr(md5(rand(0,100).microtime()), 0, 12);
    $json['sync_id'] = $api_key; 
    $json['message'] = 'Successfully API Generated';
    $this->response->addHeader('Content-Type: application/json');
    $this->response->setOutput(json_encode($json));
}

The optional callback parameter specifies a callback function to run when the load() method is completed. The callback function can have different parameters:

Type: Function( jqXHR jqXHR, String textStatus, String errorThrown )

A function to be called if the request fails.
The function receives three arguments: The jqXHR (in jQuery 1.4.x, XMLHttpRequest) object, a string describing the type of error that occurred and an optional exception object, if one occurred. Possible values for the second argument (besides null) are «timeout», «error», «abort», and «parsererror». When an HTTP error occurs, errorThrown receives the textual portion of the HTTP status, such as «Not Found» or «Internal Server Error.» As of jQuery 1.5, the error setting can accept an array of functions. Each function will be called in turn. Note: This handler is not called for cross-domain script and cross-domain JSONP requests.

Из этой статьи вы узнаете, как реализовать простую валидацию формы с помощью 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.

Конструктор пошаговых jQuery форм Timon Step Form

Если вам нужна пошаговая форма, обратите внимание на пакет Timon Step Form. В состав этого набора входит множество готовых элементов форм, а также коллекция эффектов перехода. Это визуальный конструктор, для его использования не нужны навыки программирования. Имеется встроенная jQuery-валидация входных данных.

Smart Forms

Smart Forms представляет собой полнофункциональный фреймворк для создания, как простых, так и сложных форм. В его состав входит поддержка Google reCAPTCHA, проверка номеров телефонов и многое другое. Валидация реализована на jQuery, что делает данный фреймворк отличным выбором.

Just Forms Advanced

Название данного пакета говорит само за себя – это инструмент для создания продвинутых форм. В поставку входит более 110 готовых форм, а сам фреймворк позволяет разработать уникальную форму самостоятельно.

Forms Plus JS

Forms Plus – фреймворк для создания форм с валидацией и вычислениями. Включает в себя более 100 шаблонов для разработки форм. Поддерживает:

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

Sky Forms

Мы заканчиваем обзор на фреймворке Sky Forms. Данный пакет включает в себя обширный набор стильных элементов, более 300 векторных иконок и множество цветовых схем, поддерживает любую кастомизацию. Предусматривает обработку шести состояний для элементов ввода, включая наведение курсора, фокус и так далее. Формы, созданные с помощью Sky Forms, корректно работают во всех наиболее популярных браузерах.

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

В то же время вы сможете определить, какие действия пользователя и для каких входных элементов плагин должен игнорировать. Я настоятельно рекомендую изучить официальную документацию к плагину и некоторые примеры его использования.

Bind an event handler to the «error» event, or trigger that event on an element.

Contents:

  • .on( «error» [, eventData ], handler )

    • .on( «error» [, eventData ], handler )
  • .trigger( «error» )

    • .trigger( «error» )

.on( «error» [, eventData ], handler )Returns: jQuery

Description: Bind an event handler to the «error» event.

  • version added: 1.7.on( «error» [, eventData ], handler )

    • «error»

      The string "error".

    • eventData

      An object containing data that will be passed to the event handler.

    • handler

      A function to execute each time the event is triggered.

This page describes the error event. For the .error() method removed in jQuery 3.0, see .error().

The error event is sent to elements, such as images, that are referenced by a document and loaded by the browser. It is called if the element was not loaded correctly.

For example, consider a page with a simple image element:

1

<img alt="Book" id="book">

The event handler can be bound to the image:

1

2

3

4

5

.on( "error", function() {

alert( "Handler for `error` called." )

.attr( "src", "missing.png" );

If the image cannot be loaded (for example, because it is not present at the supplied URL), the alert is displayed:

Handler for `error` called.

The event handler must be attached before the browser fires the error event, which is why the example sets the src attribute after attaching the handler. Also, the error event may not be correctly fired when the page is served locally; error relies on HTTP status codes and will generally not be triggered if the URL uses the file: protocol.

Note: A jQuery error event handler should not be attached to the window object. The browser fires the window‘s error event when a script error occurs. However, the window error event receives different arguments and has different return value requirements than conventional event handlers. Use window.onerror instead.

Example:

To replace all the missing images with another, you can update the src attribute inside the error handler. Be sure that the replacement image exists; otherwise the error event will be triggered indefinitely.

1

2

3

4

5

6

// If missing.png is missing, it is replaced by replacement.png

.on( "error", function() {

$( this ).attr( "src", "replacement.png" );

.attr( "src", "missing.png" );

.trigger( «error» )Returns: jQuery

Description: Trigger the «error» event on an element.

  • version added: 1.0.trigger( «error» )

    • «error»

      The string "error".

See the description for .on( "error", ... ).

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

Gsanidt's user avatar

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

Tony's user avatar

TonyTony

8081 gold badge7 silver badges21 bronze badges

Время на прочтение
6 мин

Количество просмотров 142K

Есть множество статей о том, как написать свои правила для плагина 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).

This is a tutorial on how to handle errors when making Ajax requests via the jQuery library. A lot of developers seem to assume that their Ajax requests will always succeed. However, in certain cases, the request may fail and you will need to inform the user.

Here is some sample JavaScript code where I use the jQuery library to send an Ajax request to a PHP script that does not exist:

$.ajax({
     url: 'does-not-exist.php',
     success: function(returnData){
         var res = JSON.parse(returnData);
     },
     error: function(xhr, status, error){
         var errorMessage = xhr.status + ': ' + xhr.statusText
         alert('Error - ' + errorMessage);
     }
});

If you look at the code above, you will notice that I have two functions:

  • success: The success function is called if the Ajax request is completed successfully. i.e. If the server returns a HTTP status of 200 OK. If our request fails because the server responded with an error, then the success function will not be executed.
  • error: The error function is executed if the server responds with a HTTP error. In the example above, I am sending an Ajax request to a script that I know does not exist. If I run the code above, the error function will be executed and a JavaScript alert message will pop up and display information about the error.

The Ajax error function has three parameters:

  • jqXHR
  • textStatus
  • errorThrown

In truth, the jqXHR object will give you all of the information that you need to know about the error that just occurred. This object will contain two important properties:

  • status: This is the HTTP status code that the server returned. If you run the code above, you will see that this is 404. If an Internal Server Error occurs, then the status property will be 500.
  • statusText: If the Ajax request fails, then this property will contain a textual representation of the error that just occurred. If the server encounters an error, then this will contain the text “Internal Server Error”.

Obviously, in most cases, you will not want to use an ugly JavaScript alert message. Instead, you would create an error message and display it above the Ajax form that the user is trying to submit.

JQuery 3.0: The error, success and complete callbacks are deprecated.

Update: As of JQuery 3.0, the success, error and complete callbacks have all been removed. As a result, you will have to use the done, fail and always callbacks instead.

An example of done and fail being used:

$.ajax("submit.php")
  .done(function(data) {
      //Ajax request was successful.
  })
  .fail(function(xhr, status, error) {
      //Ajax request failed.
      var errorMessage = xhr.status + ': ' + xhr.statusText
      alert('Error - ' + errorMessage);
})

Note that always is like complete, in the sense that it will always be called, regardless of whether the request was successful or not.

Hopefully, you found this tutorial to be useful.

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's user avatar

ripper234

218k269 gold badges626 silver badges899 bronze badges

asked Oct 16, 2009 at 13:20

Anton Gogolev's user avatar

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's user avatar

Jeff Miller

2,3751 gold badge27 silver badges41 bronze badges

answered Oct 16, 2009 at 13:35

tvanfosson's user avatar

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 Dimitrov's user avatar

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

James's user avatar

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.

Конструктор пошаговых jQuery форм Timon Step Form

Если вам нужна пошаговая форма, обратите внимание на пакет Timon Step Form. В состав этого набора входит множество готовых элементов форм, а также коллекция эффектов перехода. Это визуальный конструктор, для его использования не нужны навыки программирования. Имеется встроенная jQuery-валидация входных данных.

Smart Forms

Smart Forms представляет собой полнофункциональный фреймворк для создания, как простых, так и сложных форм. В его состав входит поддержка Google reCAPTCHA, проверка номеров телефонов и многое другое. Валидация реализована на jQuery, что делает данный фреймворк отличным выбором.

Just Forms Advanced

Название данного пакета говорит само за себя – это инструмент для создания продвинутых форм. В поставку входит более 110 готовых форм, а сам фреймворк позволяет разработать уникальную форму самостоятельно.

Forms Plus JS

Forms Plus – фреймворк для создания форм с валидацией и вычислениями. Включает в себя более 100 шаблонов для разработки форм. Поддерживает:

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

Sky Forms

Мы заканчиваем обзор на фреймворке 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

release
Build Status
devDependency Status
jsDelivr Hits

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:

  1. Downloading or Forking this repository
  2. Setup the build
  3. 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 – на примере формы регистрации.

Мы будем использовать для валидации формы 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

  • Read
  • Discuss
  • 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:

    1. 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.
    2. Create an app.js file that validates the whole form as given below in the code.
    3. 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

    Понравилась статья? Поделить с друзьями:
  • Сообщение об ошибке css
  • Сообщить об ошибке пропустить
  • Сообщить об ошибке настройки
  • Сообщение об ошибке c builder
  • Сообщить об ошибке на сайте скрипт