如何防止表单从客户端多次提交?

2022-08-30 05:40:12

有时,当响应缓慢时,可能会多次单击提交按钮。

如何防止这种情况发生?


答案 1

使用不显眼的 javascript 在表单提交后禁用表单上的提交事件。下面是一个使用 jQuery 的示例。

编辑:修复了在不单击提交按钮的情况下提交表单的问题。谢谢,一番。

$("body").on("submit", "form", function() {
    $(this).submit(function() {
        return false;
    });
    return true;
});

答案 2

我尝试了vanstee的解决方案以及asp mvc 3不显眼的验证,如果客户端验证失败,代码仍然运行,并且表单提交将永远被禁用。更正字段后,我无法重新提交。(见bjan的评论)

所以我修改了vanstee的脚本,如下所示:

$("form").submit(function () {
    if ($(this).valid()) {
        $(this).submit(function () {
            return false;
        });
        return true;
    }
    else {
        return false;
    }
});