我一直试图找到"正确"的方法来防止双重提交表格.SO上有很多相关的帖子,但没有一个在我这里找到.下面两个问题.
这是我的表格
<form method="POST">
<input type="text" name="q"/>
<button class="once-only">Send</button>
</form>
Run Code Online (Sandbox Code Playgroud)
这是我第一次尝试禁用双提交:
$(document).ready(function(){
$(".once-only").click(function(){
this.disabled = true;
return true;
});
});
Run Code Online (Sandbox Code Playgroud)
这是这里建议的方法:使用JS/Jquery发布后禁用按钮.该帖子表明提交元素必须是输入而不是按钮,但测试两者没有区别.您可以使用这个小提琴自己尝试:http://jsfiddle.net/uT3hP/
如您所见,这会禁用该按钮,但也会阻止提交表单.在提交元素是按钮和输入元素的情况下.
问题1:为什么此单击处理程序停止提交表单?
搜索更多我找到这个解决方案(当我禁用提交按钮以防止双击时,为什么我的表单不发布?)
if($.data(this, 'clicked')){
return false;
} else{
$.data(this, 'clicked', true);
return true;
}
Run Code Online (Sandbox Code Playgroud)
你可以用这个小提琴来玩这个:http://jsfiddle.net/uT3hP/1/
这确实有效,但......
问题2: 这是我们能做的最好的吗?
我认为这将是一件基本的事情.方法1不起作用,方法2不起作用,但我不喜欢它并且感觉必须有一种更简单的方法.
我有一个按钮,我想在表单提交时禁用,以防止用户多次提交.
我已尝试使用javascript onclick天真地禁用该按钮,但如果客户端验证失败按钮仍保持禁用状态.
如果表单成功提交不仅仅是在用户单击时,如何禁用该按钮?
这是一个ASP.NET表单,所以如果可能的话,我想很好地与asp.net ajax页面生命周期挂钩.
我有一个按钮控件.一旦用户点击它,就会触发click事件,然后该按钮应被禁用.我怎样才能做到这一点?我可以选择使用JQuery或JavaScript或两者.
这是我的按钮声明:
<asp:Button
ID="Button1"
runat="server"
Text="Click Me"
onclick="Button1_Click"
/>
Run Code Online (Sandbox Code Playgroud)
在后面的按钮单击代码上,我添加了一个Response.Write().应该执行该操作然后应该禁用该按钮