jQuery Validate resetForm () не сбрасывает валидацию onFocus - PullRequest
3 голосов
/ 24 января 2012

У меня есть форма, которая использует плагин jQuery Validate для проверки на стороне клиента и отправляет через AJAX.После того, как форма отправлена, я бы хотел ее сбросить сам.Я использовал метод .resetForm() для сброса полей, который работает, но проблема в том, что плагин validate по-прежнему сразу же пытается проверить поля, когда они сфокусированы, и выдает ошибку, прежде чем дать новому представлению возможность ввести свои поля.вход.

Пример потока:

  • Первоначальная проверка триггера
  • Исправить проверку, отправить форму через AJAX
  • Вызвать .resetForm (), поля успешно очищеныout
  • Попытка снова заполнить форму
  • Сосредоточиться на поле (которое в моем случае имеет подтверждение по электронной почте)
  • Прежде чем дать вам возможность ввести данные, оно проверяет иговорит, что это неверно.

Как правило, плагин позволит вам ввести ваши данные, прежде чем сказать, что это неправильно.Есть ли способ по-настоящему сбросить форму и не допустить повторной проверки в фокусе, не отключая проверку фокуса все вместе?

Спасибо, и вот вычеркнутые / упрощенные примеры кода!

    // Validation
    $('#registerForm').validate({
        submitHandler: function(form) {

            $(form).ajaxSubmit({
                success: function(response) {

                    if( response == 'success' ) {
                        resetMyForm();
                    }
                    else {
                        alert('unsuccessful');
                    }

                }
            })
        }
    });

})




function resetMyForm() {

        $('#registerForm').resetForm();
        v.prepareForm();  // Tried adding this, no help
        v.hideErrors();  // Tried adding this, no help

}

Ответы [ 2 ]

5 голосов
/ 30 января 2012

Вам нужно сбросить форму и запустить метод плагина Validation resetForm следующим образом:

var v = $("form").validate({
    submitHandler: function(form) {
            //resetForm is a method on the validation object, not the form
            v.resetForm(); 
            form.reset();
    }
});

Это, похоже, решило все проблемы, с которыми я столкнулся, следуя вашему рабочему процессу.Смотрите это: http://jsfiddle.net/nxXNz/27/

0 голосов
/ 24 января 2012

попробуйте этот фокус ()

function resetMyForm() {

    $('#registerForm').resetForm();
    v.prepareForm();  // Tried adding this, no help
    v.hideErrors();  // Tried adding this, no help
    $("ElementName").focusout(); // focus out  which ever element you want

}

...