2011-05-03 115 views
4

我想在點擊按鈕後立即禁用按鈕,因此用戶無法連續兩次單擊並連續觸發兩次OnClick_Event。 btn.Enabled = false似乎並沒有立即做到這一點。有沒有其他方法可以實現這一點?立即禁用點擊按鈕

感謝,

丹尼斯

回答

6

你在做什麼回來因此您的按鈕將在當瀏覽器接收的答覆中說呈現的頁面被禁用後後禁用它。

做它在客戶端使用JavaScript來代替:

var button = document.getElementById('yourButton'); 
button.disabled = true; 

如果你使用回發到服務器,查看這篇文章面臨的問題:How to disable an ASP.NET button when clicked

+0

我怕this'd一個答案,我究竟是如何調用OnClick方法則因爲這似乎覆蓋了Serverside-的OnClick。 – 2011-05-03 10:19:27

+0

看看這個:http://weblogs.asp.net/jeffwids/archive/2009/10/06/how-to-disable-an-asp-net-button-when-clicked.aspx – 2011-05-03 10:20:46

+0

只是在這裏迂腐,但沒有「Serverside-OnClick」這樣的東西。 ASP.NET正在爲您生成一些JavaScript,它會掛鉤到您的按鈕,這會使ASP.NET向服務器提交單一的

,確保發送POST數據中的所有表單數據。 – 2011-05-03 10:24:10

0

在按鈕的Onclick事件中的所有功能的末尾寫入btn.Enabled= false。它將執行Required操作。

+0

不幸的是,不,我仍然能夠在發生這種情況之前至少點擊它5-7次。 – 2011-05-03 10:21:56

+0

不,這正是OP說的他做的,而且這對他不起作用,因爲這是在服務器端而不是客戶端完成的。 – 2011-05-03 11:15:54

3
function disable() 
{ 
var button = document.getElementById('<%= Button1.ClientID %>'); 
button.disabled = true; 
} 

<asp:Button ID="Button1" OnClientClick="disable();"> 
3

你可以通過JavaScript

function Disable(btn) 
{ 
btn.disabled = true; 
} 

實現這一點,並添加到您的按鈕的OnClientClick = 「JavaScript的:返回禁止(本);」

0

禁用按鈕引發了問題。你不會得到服務器端事件。所以最好通過隱藏按鈕尋找替代方案(並且是顯示一些友好的錯誤消息'正在工作','處理'等)。關於如何disable asp.net button on postback的工作將有所幫助。謝謝。

2

你可以簡單地通過這個代碼來處理它。假設,這裏是一個名爲btnAdd的按鈕。當你點擊這個按鈕時,它將被禁用,因爲它執行了相應的代碼。我的意思是由於回發它將被禁用。

if (!IsPostBack) 
    { 
    btnAdd.Attributes.Add("onclick", "this.disabled=true;" + GetPostBackEventReference(btnAdd).ToString()); 
    } 
0
YourButton.Enabled = false; 

if(!YourButton.Enabled) 
{ 
\\Your Code Here 
YourButton.Enabled = true; 
} 

希望這有助於;)