Событие jQuery предотвращает ошибку и продолжает - PullRequest
0 голосов
/ 04 мая 2018

В настоящее время я работаю над проектом Django и использую администратора Django и его jQuery, чтобы добавить модальный режим между кнопкой отправки и реальной передачей формы.

Для этого я реализовал следующее:

var submit_form;

django.jQuery('form').submit(function (event) {
        event.preventDefault();
        submit_form = this;
        modal.open();
    });

и в функции модального закрытия я использую:

submit_form.submit();

Это действительно работает, но я теряю функциональность администратора Django кнопок «Сохранить и добавить еще» и «Сохранить и продолжить редактирование». Все они теперь выполняют те же действия, что и кнопка отправки по умолчанию.

Единственное, что добавлено к двум другим кнопкам отправки, - это атрибут name:

<input type="submit" value="Save" class="default" name="_save">
<input type="submit" value="Save and add another" name="_addanother">
<input type="submit" value="Save and continue editing" name="_continue">

Я также зарегистрировал событие и использовал event.currentTarget.submit(); в функции модального закрытия, но на самом деле это тоже не сработало.

Есть ли у кого-нибудь идеи, как правильно предотвратить отправку по умолчанию и выполнить ее позже?

Спасибо.

1 Ответ

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

Хорошо, я понял, как это сделать. Мне пришлось добавить скрытый ввод в мою форму, включая имя из кнопки отправки.

Ниже приведена измененная функция, которую я использую для заполнения отсутствующего ввода:

django.jQuery('form').submit(function (event) {
    event.preventDefault();
    submit_form = this;
    // Append action as hidden input
    var action = django.jQuery(this).find('input[type=submit]:focus').attr('name');
    var input = django.jQuery('<input>', {
        type: 'hidden',
        name: action
    });
    submit_form.append(input[0]);
    // Release save button
    django.jQuery(':submit').blur();
    // Finally open modal window
    modal.open();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...