Формы отправляются дважды, когда я пытаюсь предотвратить отправку формы

#javascript #jquery

#javascript #jquery

Вопрос:

На моей странице есть форма с id=save-questions-form . Я пытаюсь перехватить отправку формы следующим образом:

 $('#save-questions-form').on('submit', handler);
  

Ниже приведено содержимое функции обработчика (внутри ajax post-запрос отправляется в действие формы):

 function handler() {
    $.ajax({...});
    return false;
}
  

В этом случае форма отправляется дважды.
Этот параметр ниже также не помогает.

 function handler(event) {
    event.preventDefault();
    $.ajax({...});
    return false;
}
  

Но если я пытаюсь сделать то же самое без ajax , например, так:

 function handler(event) {
    return false;
}
  

тогда все работает нормально, и форма не отправляется.

Я решил эту проблему следующим образом:

 $('document').on('submit', '#save-questions-form', saveQuestionsSubmit);
  

В этом случае все работает нормально, и форма не отправляется дважды.
Но я не понимаю, как это работает? Есть идеи?

Комментарии:

1. Вы добавляете обработчик submit событий несколько раз?

2. Можем ли мы увидеть ваш HTML-код?

3. @RoryMcCrossan Абсолютно нет. этот случай исключен

4. Попробуйте $('#save-questions-form).submit(function(e){ e.preventDefault(); $.ajax(); return false; })

5. @RomanAndreev в какой момент вы добавляете обработчик событий в форму? Кроме того, если вы добавляете $('#save-questions-form').off('submit') перед добавлением обработчика, устраняет ли это проблему? Еще одна вещь, которую нужно попробовать, нажмите «сохранить журнал» в консоли, чтобы ошибки не исчезали при выгрузке страницы. Я подозреваю, что в вашей логике обработчика событий возникает ошибка return false , которая препятствует выполнению.