如何阻止双击asp.net按钮

How to stop asp.net button from being double clicked?

本文关键字:net 按钮 asp 双击 何阻止      更新时间:2023-12-05

好的,让我在这个问题的开头说,我已经通读了这个网站上的所有文章,并尝试了其中的大多数解决方案。

我有一个按钮,它有一个服务器端事件。此服务器端事件具有一个(handles btnSave_click)。

我的第一次尝试当然是这样

btnSave.enable = false

这当然还不够快。

然后我试了一下

btnSave.Attributes.Add("onclick", "this.disabled=true;");

和这个

btnSave.Attributes.Add("onclick", " this.disabled = true; " + ClientScript.GetPostBackEventReference(btnSave, Nothing) + ";") 

这不起作用,当然,然后我通过OnClientClick事件尝试了一堆不同的jquery和javascript。这也不起作用,但从我所看到的情况来看,这是因为我也有服务器端事件触发,我在逐步完成过程中没有达到我的功能。正如你所看到的,我花了很多时间试图让它发挥作用。希望有人知道我在这里做错了什么。我所拥有的只是一个非常简单的按钮和代码,并没有什么奢侈的东西。

这是我的按钮

<asp:Button ID="btnSave" runat="server" Width="60px" Text="Save" Enabled="False"></asp:Button>

这是服务器端事件头。:

Private Sub btnSave_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSave.Click

再次,任何想法都将不胜感激。谢谢

当您单击按钮并用javascript禁用它时,它在客户端上被禁用,而服务器端不知道它在客户端被禁用,因为服务器端检查控件属性的视图状态。如果要在单击并回发后保持禁用状态,则必须在客户端和服务器上都禁用它。

在客户端

$('#<%= btnSave.ClientID %>').click(function() {
         this.disabled = true;
    });

服务器端

btnSave.enable = false

类似的东西?

客户端:

var buttonPressed = false;

服务器:

btnSave.OnClientClick = "if (buttonPressed) return false else buttonPressed = true; return true;" 

这样的东西应该可以工作:

 $('#yourButtonId').click(function() {
         $(this).attr('disabled', 'disabled');
    });

这是一个更聪明的解决方案:服务器:

    <asp:Button ID="btnSave" runat="server" Width="60px" 
Text="Save" Enabled="False" OnClientClick="return preventDblClick()" ></asp:Button>

客户:

var dbl = 0;
function preventDblClick() {
    if (dbl < 1) {
        dbl += 1;
        return true;
    } else {
        return false;
    }
}