【问题标题】:How to stop asp.net button from being double clicked?如何阻止asp.net按钮被双击?
【发布时间】:2012-07-19 21:29:53
【问题描述】:

好的,让我以我已经阅读了该网站上的所有文章并尝试了其中大部分解决方案这一事实作为这个问题的开头。

我有一个具有服务器端事件的按钮。此服务器端事件有一个(处理 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

再次感谢任何想法。谢谢。

【问题讨论】:

  • 你试过 jQuery event.preventDefault() 吗??
  • 您能否详细说明为什么 javascript 不适合您?
  • 嗯,我认为这与我有服务器端事件干扰的事实有关。但我认为您可以同时发生客户端和服务器端事件....

标签: javascript jquery asp.net vb.net double-click


【解决方案1】:

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

    <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;

    }
}

【讨论】:

    【解决方案2】:

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

    在客户端

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

    在服务器端

    btnSave.enable = false
    

    【讨论】:

    • 这行得通,但我认为我的问题是我在服务器端事件上使用断点进行测试。我认为断点允许我点击离开。我删除了这个断点,这似乎有效。
    【解决方案3】:

    这样的事情应该可以工作:

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

    【讨论】:

      【解决方案4】:

      这样的?

      客户:

      var buttonPressed = false;
      

      服务器:

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

      【讨论】:

        猜你喜欢
        • 2014-10-01
        • 2017-05-31
        • 2018-03-05
        • 2022-01-21
        • 1970-01-01
        • 2011-07-08
        • 1970-01-01
        • 2016-09-05
        • 1970-01-01
        相关资源
        最近更新 更多