#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
, которая препятствует выполнению.