2012-07-20 77 views
0

好吧,让我以这个事实作为序言,我已经阅读了本网站上的所有文章,并尝试了大部分这些解决方案。如何阻止asp.net按钮被双击?

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

再次有任何想法,非常感谢。谢谢。

+0

你试过jQuery ** event.preventDefault()** ?? – 2012-07-20 15:20:28

+0

你能详细说明为什么javascript不适合你吗? – 2012-07-20 15:22:28

+0

嗯,我认为它与事实有关,我有一个服务器端事件干扰。但我认为你可以在同一时间发生客户端和服务器端事件...... – 2012-07-20 15:24:33

回答

1

当你点击按钮,并用JavaScript是在客户端禁用禁用而服务器端不知道它在客户端被禁用,因为服务器端检查视图状态的控制属性IES。如果你想在点击和回发后保持禁用,那么你必须在客户端和服务器上禁用它。

在客户端

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

在服务器端

btnSave.enable = false 
+0

这工作,但我认为我的问题是,我在我的服务器端事件与测试断点。我认为这个断点让我可以点击。我删除了这个断点,这似乎工作。 – 2012-07-20 15:48:02

+0

这很好@用户史密斯 – Adil 2012-07-20 15:50:04

+0

谢谢阿迪尔.... – 2012-07-20 15:50:41

1

是这样的?

客户端:

var buttonPressed = false; 

服务器:

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

像这样的东西应该工作:

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

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

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

    } 
}