Инициировать событие при наличии ошибок проверки?

Мне нужно добавить дескриптор к любому обстоятельству, когда проверка формы не выполняется.

Я читал этой, что объясняет, что я должен добавить обработчик следующим образом:

$('form').bind('invalid-form.validate', function () {
  console.log('form is invalid!');
});

но это событие срабатывает только при попытке отправить форму.

Мне нужно обработать событие, которое запускается в любое время, когда форма после проверки (т. е. элемент теряет фокус и т. д.).

чего я пытаюсь достичь, так это большой формы (~50 полей), и это расщепленный в загрузки вкладки.
Я хочу, чтобы, когда есть какой-либо новый сбой проверки или успех, установите или очистите класс ошибки в заголовке вкладки, который содержит недопустимые/допустимые элементы. П. С. мой вопрос не о том, как установить эти классы в закладках. Я только хочу знать, какое событие(ы) обрабатывать, чтобы получать уведомления при каждом изменении состояния проверки во всей форме.

1 ответов


мне нужно добавить обработчик к любому обстоятельству, когда проверка формы не выполняется.

$('input, textarea, select').on('focusout keyup', function() {
   if ($('form').valid()) {
       // do something
   }
});

Я хочу, чтобы при возникновении ошибки проверки в заголовке вкладки был установлен класс ошибки, содержащий недопустимые элементы.

Ну, это немного отличается от того, что вы изначально просили. (игнорировать первую половину моего ответа.)

использовать highlight и unhighlight параметры вместе с jQuery DOM обход, чтобы установить и отменить любой класс в DOM вы хотите. highlight срабатывает, когда что-то недопустимо и unhighlight срабатывает, когда он становится действительным. См.ответ в качестве примера.

использовать the .setDefaults() метод чтобы установить эти параметры, так как вы используете unobtrusive-validation плагин и не имеют прямого доступа к .validate() метод.