Цитировать комментарий пользователя:
"Спасибо @RoryMcCrossan за ваши предложения, но эти два обратных вызова запускаются, когда пользователь пытается отправить форму. Мне нужно получить обратный вызовв тот момент, когда она была подтверждена. "
Да, потому что отправка формы вызывает проверку всей формы.« В тот момент, когда она (форма) была подтверждена », это не то, что вы можете захватить иначе.
Для этого нет обратных вызовов.
Вы можете захватывать, когда отдельное поле проверяется с помощью событий focusout
и keyup
, и вы можете захватывать, когда вся форма проверяется с помощью события click
кнопки отправки.Но вы не можете выполнить захват, когда вся форма действительна, без использования кнопки отправки или программного запуска проверки на всей форме.
Однако есть функция, которая подсчитывает общее количество ошибок, называемая this.numberOfInvalids()
,И есть обратный вызов, который срабатывает всякий раз, когда любое поле оценивается, называется showErrors
.Вы можете использовать showErrors
для создания возможного (несовершенного) обходного пути.Посчитайте, сколько сообщений об ошибках, и если их больше нуля, вы знаете, что форма недействительна.
showErrors: function(errorMap, errorList) {
if (this.numberOfInvalids() != 0) {
// invalid form
} else {
// no errors
}
this.defaultShowErrors(); // enable default error messages
}
Однако, когда ошибок нет, форма может быть или не быть действительной; это решение не охватывает все случаи и завершится неудачей, если пользователь еще не нажал кнопку отправки .Когда пользователь еще не нажал кнопку отправки, пустые входы еще не могут быть засчитаны как ошибки.
DEMO: jsfiddle.net / fL6n4oub /
Возможно, вы сможете проявить изобретательность и найти решение, используя то, что я здесь показал.
Вы можете создать свою собственную пользовательскую функцию-обработчик событий, которая срабатывает на focusout
и keyup
события всех полей, но единственный доступный метод для проверки правильности всей формы также приведет к появлению сообщений проверки формы.