2013-09-25 3 views
12

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

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

На основании документации по собственности игнорируемых, говорится:

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

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

+0

Пожалуйста, покажите свой код, включая соответствующий HTML-разметки. – Sparky

ответ

40
  • Вы не можете включить или выключить плагин 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/

+2

Это лучший ответ в Интернете! Я искал это в течение долгого времени. Прекрасно работает. –

+0

Я искал это решение примерно через 5 дней ... Большое спасибо – Abhishek

+0

@Rick, это просто неправда. И если у вас есть новый вопрос, напишите новый вопрос, не спрашивайте в комментариях. – Sparky

Смежные вопросы