【问题标题】:jQuery event preventdefault and continuejQuery 事件 preventdefault 并继续
【发布时间】:2018-10-14 22:19:06
【问题描述】:

我目前正在处理一个 Django 项目,并且正在使用 Django admin 及其 jQuery 在提交按钮和真实表单提交之间添加一个模式。

为了实现这一点,我实现了以下内容:

var submit_form;

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

在模态关闭功能中我正在使用:

submit_form.submit();

这确实有效,但我失去了“保存并添加另一个”和“保存并继续编辑”按钮的 Django 管理功能。 它们现在都执行与默认提交按钮相同的操作。

唯一添加到其他两个提交按钮的是名称属性:

<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();,但这实际上也不起作用。

有人知道如何正确防止默认提交并稍后执行吗?

谢谢。

【问题讨论】:

  • 试试看,submit_form = $(this);
  • 我已更改为submit_form = django.jQuery(this);,因为这是我在 Django 中的 $,但它什么也没做。不再提交表单。
  • 我可以在使用submit_form = django.jQuery(this);时使用submit_form.context.submit();提交表单,但这也回退到默认提交方法。

标签: javascript jquery django django-admin


【解决方案1】:

好的,我想出了如何做到这一点。我必须在我的表单中添加一个隐藏的输入,包括来自提交按钮的名称。

以下是我用来填充缺失输入的修改函数:

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();
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2012-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-13
    相关资源
    最近更新 更多