Делегирование события для события submit () в jQuery - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть это в моем коде jQuery:

$(this).parents('form').submit();

Проблема в том, что в первый раз она работает без перезагрузки страницы, но со второго раза, когда я ее называю, страница перезагружается. Я читал Почему Ajax работает правильно при первом запросе, но возвращает частичное представление на новой странице при втором запросе? и там написано:

Поведение «работает только в первый раз» типично для ситуации, когда контент добавляется динамически, но события привязываются непосредственно к элементам (например, при готовности DOM).

Я пытался сделать что-то подобное, чтобы использовать делегирование события для события submit () формы:

$(document).on('submit', 'form', function(){
    // Something here?
});

Но я не уверен, что добавить в эту функцию (), так как все, что мне нужно, это отправить форму, но с AJAX, чтобы страница не перезагружалась, в значительной степени, что я уже могу достичь в первый раз с $(this).parents('form').submit();. Есть идеи? Спасибо.

ОБНОВЛЕНИЕ 1:

Это триггер поля выбора (событие onChange пытается отправить форму):

$(document).on('change', 'form select.js-admin-index-autosubmit', function() {
    if ($('.js-checkbox-list:checked').val() != 1 && $(this).val() >= 1) {
        alert(__l('Please select atleast one record!'));
        return false;
    } else if ($(this).val() >= 1) {
        if (window.confirm(__l('Are you sure you want to do this action?'))) {
            $(this).parents('form').submit();
        } else {
            $(this).val('');
        }
    }
});

Когда я изменяю значение, чтобы выбрать действие из поля выбора, я получаю это сообщение: Are you sure you want to do this action? Первый раз, когда он все делает с AJAX (отправка формы). Но со второго раза он работает правильно, но перезагружает страницу. Это следует делать с AJAX всегда, без перезагрузки страницы, не только с первого раза. В частности, это строка, которая выполняется для отправки формы:

$(this).parents('form').submit();

Я пытаюсь понять, почему эта же строка работает с AJAX в первый раз, но со второго раза перезагружает страницу.

1 Ответ

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

Я должен имитировать поведение AJAX каким-то другим способом при первой загрузке, поскольку я использую $(this).parents('form').submit();, и, как сказал Теему в комментариях к вопросу, это не AJAX.

...