Как я могу заблокировать ввод после JQuery Validation SubmitHandler и Form.Submit успешно? - PullRequest
3 голосов
/ 16 сентября 2011

У меня есть 2 метода проверки в моей форме. а. Проверка JQuery б. Пара сложных жестко заданных правил в обработчиках Form.Submit ().

Мне нужно отключить кнопку отправки, когда ОБА a & b проверка прошла успешно, чтобы пользователь не отправлял дважды.

Моя лучшая попытка на данный момент заключается в добавлении "submitHandler" к проверке JQuery, так что ...

jQuery("#myForm").validate(
{
    submitHandler: function (form) {
        form.submit({
            success: function (submittedForm, action) {
                alert("submitting");
                $('input[type=submit]', submittedForm).attr('disabled', 'disabled');
            }
        });
    }
});     

Конечно, это не похоже на работу. К тому времени, когда он попадает в SubmitHandler, оба этапа проверки уже выполнены? Если (a) Проверка JQuery не удалась, это событие не инициируется. Однако, если (b) Пользовательская проверка не удалась, она запускается, хотя форма не отправлена. Если оба (a & b) прошли, он запускается, однако внутренний обратный вызов «success» никогда не достигается. Поэтому мой ввод никогда не отключается.

Вот пример 1 из n подтверждений отправки (в его динамической форме есть другие подобные проверки, где .submit используется для возврата false, когда проверка не пройдена) ...

$('#myForm').submit(function () {
    // If one is checked they must both be checked.
    if ($(SessionRadioId_2).is(':checked') || $(SessionRadioId_4).is(':checked')) {
        if (!($(SessionRadioId_2).is(':checked')) || !($(SessionRadioId_4).is(':checked'))) {
            alert('If you plan on attending "ABC" you must select it in both Session 2 & 3.');
            return false;
        }
    }

Спасибо, Джастин

1 Ответ

0 голосов
/ 16 сентября 2011

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

...