2012-07-20 110 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; 

    } 
}