问题标签 [double-submit-prevention]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
4354 浏览

javascript - 在提交时禁用带有 javascript 的表单以防止重复提交

我想在提交表单后禁用表单,以防止重复提交。我认为非常标准的用例,但我能找到的所有示例都有缺陷。

我能找到的一切都是基于禁用提交按钮,但这并不妨碍如果用户在表单上按下回车键重新提交表单,这是一种非常常见的方法。

我正在考虑修改其中一个现有的脚本来解决这个问题,但在我重新发明轮子之前,有没有人知道已经正确处理这个问题并且他们能够共享的脚本?我真的很惊讶那里似乎还没有任何东西。

0 投票
5 回答
1166 浏览

jquery - Disabled jQuery UI Button Remains Disabled on Returning to Page

I have a JQuery UI submit button on a form when it's clicked to both prevent double-clicking and to also make it visibly clear that it was in fact clicked properly.

So I use jQuery to do this:

It works, but the problem is when the user hits their back button it remains disabled. What's the proper way to disable a submit button when clicked? I obviously use jQuery, so preference is to use jQuery.

UPDATE: many people suggested I use $(document).ready(function() {$('input:submit').button('enable');}); to overcome this persistent disabling of the button. It turns out that won't work if it comes before my button initialization call in $(function() {}. But if I put that button('enable') after my button initialization code, even in the $(function() {}) section, then it works as expected.

But now I realize this whole button disabling only works in Firefox! If I disable the button, the form won't submit in IE and Chrome (haven't tested others)!

UPDATE 2: I finally got this to work, though a bit concerned some browsers are not going to be able to submit things with these workarounds... Here's my final code, would love to hear opinions of potential issues:

0 投票
1 回答
601 浏览

javascript - 防止 Rails link_to_remote 多次提交 w Javascript

在 Rails 项目中,我需要防止 link_to_remote 被双击。看起来 :before 和 :after 是我唯一的选择——它们分别被添加/附加到 onclick Ajax 调用中。但是,如果我尝试类似:

Ajax 永远不会运行。如果我在运行 Ajax 之后尝试它,但链接永远不会停止观察。

我见过的解决方案依赖于创建一个变量并阻止整个表单,但是此页面上有多个 link_to_remote 行,一次单击多个行是有效的 - 只是两次不同。在 link_to_remote 之外声明的每行一个变量似乎非常笨拙......

我最初没有使用原型,而是首先尝试使用纯 Javascript 来进行概念验证——但它也失败了:

<a href="#" onclick="self.onclick = function(){alert('foo');};">点击</a>

只是在单击时发出警报-这里的 lambda 什么都不做?下一个更像是预期的目标,应该只在第一次提醒。但相反,它每次都会发出警报:

<a href="#" onclick="alert('bar'); self.onclick = function(){return false;};">点击</a>

所有想法表示赞赏!

0 投票
9 回答
25939 浏览

asp.net-mvc-3 - ASP.NET MVC - 如何使用 jquery.validate.unobtrusive lib 防止双击提交?

我需要避免双击提交行为。我正在将客户端验证与不显眼的库一起使用。我有以下代码可以避免双重单击:

不幸的是,如果我的表单有一些有效字段(例如,必填字段),上面的代码仍然会被触发,因此,即使我更正了表单上的任何错误,我也无法再次提交。

验证成功后如何触发双击代码?

0 投票
2 回答
3260 浏览

gwt - 如何在 GWT 应用程序中防止 DoubleSubmit?

澄清一下双重提交是什么:当用户点击提交按钮两次时,服务器将处理相同的 POST 数据两次。为了避免这种情况(除了在单次提交后禁用按钮),大多数 Web 框架(如 Struts)都提供了令牌机制。我正在 GWT 中寻找与此等效的东西。

0 投票
7 回答
33385 浏览

web-applications - 解决双重提交问题

我想看看 Web 开发人员如何避免重复提交问题。所以基本上我对这个问题的理解如下:

当不耐烦的用户多次提交表单时,会发生双重提交,从而导致问题。这个问题可以通过 JavaScript(特别是 jQuery 脚本)来解决,一旦表单提交就禁用提交按钮 - 如果客户端禁用了 JavaScript,则此问题的一个弱点是。

还有服务器端的检测方法。

所以我的问题是:

人们如何克服双重屈服?双重提交导致问题的真实例子是什么?是否有任何 Web 应用程序框架内置了双重提交工具?

0 投票
2 回答
482 浏览

javascript - 如果用户中断重定向到新页面,则禁用的提交按钮保持禁用状态

我想在使用 javascript 按下提交按钮后禁用它。

myForm.onsubmit = function() { ... mySubmitButton.disabled = true; ... }

但是当用户在当前页面仍然存在的情况下停止打开新页面时,该按钮仍处于禁用状态。

如果来自服务器的内容是一个文件,也会有同样的结果(在这种情况下不会重定向到新页面)。

有没有办法确定浏览器是否不再“想要”加载新 URL 并重新启用 mySubmitButton?

0 投票
2 回答
177 浏览

javascript - 如何防止此函数在 x 毫秒内执行超过 2 次?

当我到达滚动底部时,如何防止它被执行两次?

我看到的选项:

我尝试设置一个 var loading_already == false 并且类似

在哪里

但是没有成功,有什么建议吗?

谢谢!

0 投票
2 回答
8136 浏览

asp.net-mvc-3 - ajax - 防止双击提交

如何防止用户双击作为 ajax 部分视图的注册表单上的提交按钮?

我很遗憾地问,因为这已经被问到了。无论我在哪里搜索,我现在都找不到明确的工作答案。禁用按钮阻止提交。使用 var javascript clickcount+alert+return_false 不会重置。

环境:asp.net mvc3

查看: 表单显示加载:@RenderPage("_SignupForm.cshtml")

提交使用:

提交控制:<input type="submit" value="Sign up" />

注册控制器:

0 投票
5 回答
10193 浏览

php - 刷新php时双重提交

我正在尝试纠正脚本中双重提交的问题。当我按下提交时,它只更新一次mysql(这是我想要的)。但是,当我点击刷新时,它会再次更新 mysql。一旦点击刷新按钮,它似乎会忽略 if 语句。我该怎么做才能阻止这

这是我的代码