[英]How to disable an ASP.NET Button right after first submit (on the client)?
我有一个提交按钮。 单击此按钮后,表单将被提交。 我想防止用户多次单击它。 因此,OnClientClick
我正在使用这样的功能禁用按钮,
$("#btn123").attr("disabled", "disabled");
但是现在的问题是我的表格没有提交。
即使当我从JavaScript函数返回true时。 以下是我的javascript函数
function ab() {
$("#btn123").attr("disabled", "disabled");
return true;
}
我也在使用母版页。
我认为问题在于它必须绑定到表单的提交。 以下代码将解决此问题。
$("#formId").submit(function(){
$("#btn123").attr("disabled", "disabled");
})
按钮未触发postBack,因为您已禁用此功能。 避免多个postBack的方法是并排设置两个按钮。 真实和虚拟。 第一次单击时,隐藏/删除真实按钮并显示虚拟按钮
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" ClientIDMode="Static" OnClientClick="disableButton();"/>
<asp:Button ID="ButtonDummy" runat="server" Text="Button" ClientIDMode="Static" OnClientClick='return false;' style="display:none;"/>
和JS:
function disableButton() {
$("#Button1").hide();
$("#ButtonDummy").show();
return true;
}
对于我希望真的很常见的东西来说,这是令人惊讶的晦涩。 如果在单击按钮后禁用该按钮,则将防止发生回发。 甚至@Rajdeep在表单的Submit事件中禁用它的建议对我也不起作用。
我发现最好的方法是设置按钮的UseSubmitBehavior =“ false”:
<asp:Button ID="btn123" UseSubmitBehavior="false" OnClientClick="ab()"
OnClick="btn123_Click" runat="server" />
这将导致服务器修改按钮的OnClick事件,以包括启动回发的javascript调用,因此在浏览器中如下所示:
OnClientClick="ab();__doPostBack('ctl00$btn123','')"
即使btn123最终被禁用,这也会导致在调用函数ab()之后发生回发。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.