Плагин jQuery Validation перехватывает событие формы submit
с помощью обработчика событий, который вызывает его функцию validate()
для проверки формы перед отправкой и, таким образом, предотвращает отправку формы в случае сбоя проверки.
Если выподключите событие submit
для каждой из ваших форм с помощью jQuery и сделайте это внизу ваших форм, это добавит ваш собственный обработчик для выполнения перед обработчиком плагина.Таким образом, вы можете самостоятельно вызывать функцию valid()
в формах и запускать любой пользовательский код, который вы хотите, после полной проверки формы.Функция valid()
плагина вызывает функцию validate()
в форме, а затем возвращает логическое значение для успеха / неудачи.Если вас не волнует успех / неудача, вы можете просто позвонить validate()
напрямую, вместо того, чтобы звонить valid()
.
Когда вы звоните valid()
или validate()
в форме, он продолжитработать с ненавязчивой проверкой клиента MVC3, чтобы пометить форму ошибками проверки, за исключением того, что теперь вы сможете делать что-то еще после вызова.
Я установил контрольные точки в своем собственном обработчике submit()
(ниже)и в плагине проверки jQuery validate()
и valid()
функции.Я вижу, что в этой реализации их вызывают только один раз, поэтому проверка полной формы не должна выполняться несколько раз.
Конечно, плагин также перехватывает события focus, blur, keyup и click, поэтомуВалидаторы для отдельных полей уже вызваны несколько раз, поэтому пользователю предоставляется немедленная обратная связь по ошибкам / разрешенным полям формы.Проверка ленива в том смысле, что она не запускается, пока пользователь не введет значение в поле.Когда пользователь вводит значение и покидает поле, поле проверяется.Если поле помечено как недействительное, повторная проверка полна решимости, поскольку недопустимое поле неоднократно проверяется на различные события, пока не будет установлено, что оно является действительным.
Поместите следующее в нижней части вашей страницы,ниже всех form
тегов.Как написано, с помощью селектора $("form")
он будет обрабатывать событие submit для всех элементов form
на странице.Конечно, вы можете использовать селекторы jQuery, чтобы выбрать определенные form
теги для проверки.Просто вызовите valid()
или validate()
в форме всякий раз, когда вы хотите выполнить проверку, и следуйте ей с любым кодом, который вы хотите выполнить один раз.
Чтобы получить результат проверки:
<form>
...
</form>
<script type="text/javascript">
$("form").submit(function (e) {
if ($(this).valid() == false) {
alert("yo!"); // execute anything you want following validation
}
});
</script>
Или, если вы не хотите знать результат проверки:
<script type="text/javascript">
$("form").submit(function (e) {
$(this).validate();
alert("yo!"); // execute anything you want following validation
});
</script>