繁体   English   中英

如何在第一次提交(在客户端上)后立即禁用ASP.NET按钮?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM