DirtyForms не работает должным образом при использовании метода submitHandler () jQuery Validate - PullRequest
0 голосов
/ 31 мая 2018

Я использую DirtyForms и всплывающее окно jQuery Validate для проверки моих форм.Мне также нужно использовать метод submitHandler(), потому что я делаю пару действий перед отправкой формы.В этом случае DirtyForms запускается даже на обычной форме отправки, когда это не должно быть.

$('.validate').validate({
	// submitHandler causer DirtyForms to be triggered evn on normal form submit
  submitHandler: function (form) {
    // do a couple of things here, then...
    form.submit();
  }
});

$('form[method="post"]').dirtyForms();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.17.0/jquery.validate.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.dirtyforms/2.0.0/jquery.dirtyforms.min.js"></script>

<p>Fill the field and send the form, you'll see that DirtyForms is triggered even if it should not</p>
<form action="#" method="post" class="validate">
  <input type="text" name="username" required>
  <button type="submit">send</button>
</form>

Пожалуйста, любая помощь?

1 Ответ

0 голосов
/ 31 мая 2018

Поскольку submitHandler срабатывает только тогда, когда форма действительна, вам никогда не понадобятся DirtyForms, чтобы что-то здесь делать.

Так что просто убейте его в submitHandler, используя .dirtyForms('setClean')

$('.validate').validate({
    submitHandler: function(form) {
        // do a couple of things here, then...
        $('form:dirty').dirtyForms('setClean');  // <- kill DirtyForms
        form.submit();
    }
});

$('form[method="post"]').dirtyForms();

DEMO: jsfiddle.net / aunpmfsa / 1 /

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