Forms 在单击“上一步”按钮时防止重复表单提交,同时不中断页面

Forms 在单击“上一步”按钮时防止重复表单提交,同时不中断页面,forms,input,submit,back-button,Forms,Input,Submit,Back Button,我有一个带有表单的页面,我试图防止重复提交,这相当简单(如果有人好奇,我使用了这个 $("form").submit(function() { setTimeout(function() { $("input").attr("disabled", "disabled"); }, 50); }); …是我偷来的,它工作正常。正如预期的那样,输入很快被禁用,表单按预期提交,用户被重定向 这是我的问题:我预计用户有时会使用“后退”按钮而不是页面导航,因此如果他

我有一个带有表单的页面,我试图防止重复提交,这相当简单(如果有人好奇,我使用了这个

$("form").submit(function()
{
    setTimeout(function()
    {
        $("input").attr("disabled", "disabled");
    }, 50);
});
…是我偷来的,它工作正常。正如预期的那样,输入很快被禁用,表单按预期提交,用户被重定向

这是我的问题:我预计用户有时会使用“后退”按钮而不是页面导航,因此如果他们单击“后退”按钮,我希望页面能够正常运行。但是,当我在成功发布后单击“后退”按钮时,我会返回到上一页,并禁用所有输入(正如您可能知道的那样).我希望他们能够在单击“后退”按钮后使用该页面(如果他们愿意)


我第一次尝试使用header/meta标记告诉浏览器不要缓存页面,但这不起作用(在Firefox 3.6.8中),然后我决定无论如何都不想这样做,因为它可能不兼容跨浏览器,也可能不是一种最佳做法(这是一种情况)。我不想使用任何“中断”的东西后退按钮就像我见过的一些应用程序一样(比如,当用户单击它时,它不会让他们返回页面,而是强制他们停留在该页面上),这对我来说似乎是个坏主意。有谁知道有什么方法可以防止在客户端重复提交表单,而不会在用户单击“后退”按钮时使页面变得无用?(如果有任何问题,我使用的是ASP.NET MVC 1).

嗯,听起来好像没有其他人想到了更好的主意并发布了它。我注意到我们自己的堆栈溢出也有同样的行为(至少在提问页面上是这样),禁用提交按钮,当我单击“上一步”时,按钮仍然被禁用。也许我能做的最好的办法是将其保留在按钮上禁用,从而强制他们手动刷新页面,或者(希望)鼓励他们尽可能使用站点导航而不是后退按钮


但是,如果其他人有更好的想法,我仍然愿意接受。

为什么不创建一个对每个表单都唯一的随机键,然后在提交时将该键插入数据库,如果该键已经存在于数据库中,则表单已经提交,所以不要再次处理数据……这样做是不对的您没有修改DOM,可以确保数据的完整性。

这是一个防止在服务器上重复处理表单的好主意。不过,我的想法是,如果可能的话,阻止客户端的操作。显然,我们也必须在后端处理它,但我想尝试阻止任何客户端的操作ide操作。