another_dream
@another_dream
Backend-разработчик, Laravel/ZF2/Yii2

Почему не работает preventDefault на submit?

1) Есть форма. Есть обработчик на jQuery:
$("#cartForm").on('submit', function (event) {   
    event.preventDefault();
    alert('Msg');
});

2) Как перед отправкой формы, после клика на submit, сначала исполнить AJAX запрос, и уже после выполнения(в моем случае это запись в БД) продолжить отправку формы?

Спасибо.
  • Вопрос задан
  • 25576 просмотров
Решения вопроса 1
onqu
@onqu
weasy
#cartForm - должен быть id формы. И, желательно, проверить консоль на наличие ошибок.

<form id="cartForm" method="post">
    <input type="text" />
    <input type="submit" />
</form>


// Событие на id формы
$("#cartForm").on('submit', function (e) {   
    e.preventDefault();
    
    // Сохраняем сслыку на форму
    var form = this;
    
    $.ajax({
        url: 'some url'
    }).done(function(data) {
        // Ajax выполнен, отправляем форму
        form.submit();
    });
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
passshift
@passshift
php, js, html5, css
Замените

$("#cartForm").on('submit', function (e) {

на

$('body').on('submit', '#cartForm', function(e) {
Ответ написан
Может быть оба запроса выполнить с помощью AJAX?
Ответ написан
Комментировать
icelaba
@icelaba
Знаю и умею всё
1) $("#cartForm").on('submit', function () {
Не работает потому что вы его аргументом функции не передаете надо - .on('submit', function (event) {

2) Сделать submit формы програмно в javascript ($( "#cartForm" ).submit(callback) ) и разместить этот код в колбеке ajax запроса
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы