jQuery事件阻止默认并继续

时间:2018-05-04 12:15:39

标签: javascript jquery django django-admin

我目前正在开发一个Django项目,我正在使用Django管理员和它的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();,但这实际上也没有用。

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

感谢。

1 个答案:

答案 0 :(得分:0)

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

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

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