form.on ('submit') не запускается после form.submit (), но до - PullRequest
1 голос
/ 25 мая 2019

У меня есть триггер при отправке формы и загрузочный ящик для подтверждения, который показан на кнопке отправки формы. В подтверждении загрузки я отправляю форму, если пользователь говорит да. Моя проблема заключается в запуске триггеров до того, как пользователь скажет «да», и больше не будет триггеров, когда я вызываю form.submit() в bootbox.

<html>
  <form>
    <!-- something here -->
    <button type="submit"></button>
  </form>
</html>
<script>
form.on('submit', function(){
  //do something here (I)
}
form.validate({
  submitHandler: function (form) {
      finalConfirm(form); (II)
  }
});
function finalConfirm(form){
  confirm('message', function (confirmed) {
    if(confirmed) form.submit() (III)
  })
}
</script>

Я ожидаю, что //do something here (I) выполнится после if(confirmed) form.submit() (III) или, по крайней мере, до и после, но выполнится только до него (как я показал в коде)

1 Ответ

3 голосов
/ 25 мая 2019

Вызов submit напрямую для элемента form (элемент DOM, а не оболочки jQuery) не запускает обработчики submit.Аргумент, что плагин validate передает ваш submitHandler, является элементом DOM, а не оболочкой jQuery для него (согласно этой документации ).

Вызов submit в оболочке jQuery дляform элемент делает триггеры submit обработчики (по крайней мере, те, которые прикреплены с помощью jQuery).Поэтому, если вы хотите, чтобы form.submit() в finalConfirm активировал ваш обработчик отправки, создайте для него оболочку jQuery:

$(form).submit();

(Либо там, либо до того, как submitHandler передает его finalConfirm.)

Просто убедитесь, что вы не попадете в бесконечный цикл.: -)

...