【问题标题】:how to prevent submitting form twice?如何防止两次提交表单?
【发布时间】:2017-11-27 12:50:14
【问题描述】:

我正在使用 MVC 开发一个网站。

在一个页面中,我使用模式打开“创建新项目”。所以我引用了“jquery.js”。

我还使用“@Ajax.ActionLink()”在模态中加载部分视图。所以我需要参考“jquery.unobtrusive-ajax.min.js

为了验证表单,我引用了“jquery.validate*

更重要的是,我有一些文件必须从“模态表单”上传。最后引用了“jquery.form.min.js”。

我需要所有这些 j-query 插件。但问题是“表单提交了两次”,我无法删除任何这些插件。我应该怎么办? 这是我的表单 ajax 代码:

 $('#frmEditNewCompany').ajaxForm({
    beforeSubmit: function (arr, $form, options) {
        $(".blockerModal").show();
    },
    onsubmit: function (event) {
        $(".blockerModal").show();
    },
    success: function (data, textStatus, jqXHR) {
        alert("after submit")
        if (data.Success == true) {
            $("#dv-modal-lg").modal("hide");
         }
        eval(data.Script);
        $(".blockerModal").hide();
    },
    error: function (jqXHR, textStatus, errorThrown) {
        $(".blockerModal").hide();
    }
});

【问题讨论】:

  • 您可以在表单提交一次时将标志设置为 true,然后在第二次您可以检查是否为 true,您可以阻止事件或停止事件的传播

标签: javascript jquery ajax forms model-view-controller


【解决方案1】:

在您的 js 中,只需调用所有函数顶部的函数并禁用按钮

   $(':input[type="submit"]').prop('disabled', true);

最后启用

 $(':input[type="submit"]').prop('disabled', false);

或者您可以使用 globle var 作为布尔值并检查

if(!flag) 
{
flag=true;
//..do
}
else
{
return false;
}

【讨论】:

    猜你喜欢
    • 2013-05-24
    • 1970-01-01
    • 2014-06-13
    • 2012-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多