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

How to disable an ASP.NET Button right after first submit (on the client)?

本文关键字:按钮 NET ASP 客户端 提交      更新时间:2023-09-26

我有一个提交按钮。单击此按钮后,将提交表单。我想防止用户多次单击它。所以在客户端点击

我正在使用像这样禁用按钮的功能,

$("#btn123").attr("disabled", "disabled");

但现在的问题是我的表格没有提交。

即使我从我的 javascript 函数返回 true。以下是我的JavaScript函数

 function ab() {
        $("#btn123").attr("disabled", "disabled");
        return true;
    }

我也在使用母版页。

我认为

问题是它需要绑定到表单的提交。以下代码将解决此问题。

$("#formId").submit(function(){
    $("#btn123").attr("disabled", "disabled");
})

按钮未触发回发,因为您已禁用此功能。避免多个回发的方法是并排使用两个按钮。真实而虚假。第一次单击时隐藏/删除真实按钮并显示虚拟按钮

<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建议在表单的提交事件中禁用它,也对我不起作用。

我发现最好的方法是设置按钮的UseSubmitBehavior="false":

<asp:Button ID="btn123" UseSubmitBehavior="false" OnClientClick="ab()"
    OnClick="btn123_Click" runat="server" />

这将导致服务器修改按钮的 OnClick 事件以包含启动回发的 JavaScript 调用,因此在浏览器中如下所示:

OnClientClick="ab();__doPostBack('ctl00$btn123','')"

这将导致在调用函数 ab() 后发生回发,即使 BTN123 最终被禁用也是如此。