Как запустить функцию jQuery, только если форма верна - PullRequest
49 голосов
/ 19 февраля 2011

У меня есть функция jQuery, связанная с моей кнопкой отправки, например:

$(function () {
    $('#signupform').submit(function () {
        alert('test');
    });
});

Однако она запускается независимо от того, действительна ли форма.Моя модель украшена различными аннотациями DataAnnotations, и проверка на стороне клиента работает хорошо, но я хочу, чтобы функция jQuery запускалась только в том случае, если форма была проверена.Как мне это сделать?

РЕДАКТИРОВАТЬ: Чтобы уточнить, я использую ненавязчивый JavaScript-код MVC + jQuery для обработки проверки на стороне клиента.У меня нет своих собственных подпрограмм проверки JavaScript.Встроенная проверка jQuery отлично справляется с проверкой формы, но мне просто нужно знать, как получить результаты этой проверки в логическое значение в моей собственной функции.

Ответы [ 2 ]

120 голосов
/ 19 февраля 2011

Если вы используете jquery validate для ненавязчивой проверки, вы можете:

$(function () {
    $('#signupform').submit(function () {
        if($(this).valid()) {
            alert('the form is valid');
        }
    });
});
8 голосов
/ 19 февраля 2011
$(function () {
    $('#signupform').submit(function (e) {
        if (validateForm() === true) {
            alert('Form is valid.');
        }
    });
});

Обратите внимание, что функция validateForm() будет той, которую вы используете в браузере для проверки валидации.РЕДАКТИРОВАТЬ: Это действительно jQuery $(this).valid().

ПРИМЕЧАНИЕ: При разъяснении вопроса ответ выше является одним из способов остановить отправку формы при проверке, но не метод, который был желателен ( jQuery действует() проверка ).Подробности см. В ответе Дарина Димитрова.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...