Включение/выключение проверки JQuery для одного входа

Я использую ту же форму для добавления и редактирования значений. Во время добавления элемента я хочу, чтобы он заставлял проверку имени на сервере, что он делает. Тем не менее, в режиме редактирования я хочу, чтобы он не проверял, так как имя может не измениться. Я попытался установить свойство ignore в валидаторе классу "игнорировать" на основе ссылки ниже. Я использую то же имя класса в имени ввода, но это не работает. Он продолжал проверять сервер. Любые мысли?

URL-адрес кода, который я использую, прежде всего функцию проверки. http://jqueryvalidation.org/validate/

На основе документации для свойства ignore указано:

Элементы, которые следует игнорировать при проверке, просто отфильтровывая их. Используется метод jQuerys not-method, поэтому все, что принято not(), можно передать как этот параметр. Входы типа submit и reset всегда игнорируются, поэтому отключены элементы.

Я просмотрел код и видел только его влияние на очистку ошибок во время вызова validator.resetForm(). Эта часть кода работает правильно.

Ответ 1

  • Вы не можете включить/выключить плагин jQuery Validate для формы или для отдельных элементов поля. Для этого нет способа или обходного пути.

  • Параметр ignore устанавливается в вызове .validate(), который является "одноразовой" инициализацией плагина, поэтому вы не можете изменять или переключаться между параметрами динамически. Любые последующие вызовы .validate() всегда игнорируются.

После инициализации плагина с помощью .validate() единственным решением будет использовать метод .rules() для динамических 'add' и 'remove' правил для отдельных элементов поля. Не обманывайтесь терминологией 'add'... этот метод также позволяет вам перезаписывать существующие правила, поэтому вам не обязательно сначала их 'remove'.

Чтобы динамически установить поле как required:

$('#myfield').rules('add', {
    required: true   // set a new rule
});

Чтобы динамически установить поле как не required:

$('#myfield').rules('add', {
    required: false   // overwrite an existing rule
});

ИЛИ

$('#myfield').rules('remove', 'required');  // removes only specified rule(s)

ИЛИ

$('#myfield').rules('remove');  // removes all rules for this field

Документация: http://jqueryvalidation.org/rules/