2011-08-24 148 views
4

我有我的aspx頁面像的ImageButton:禁用按鈕不會觸發點擊服務器端事件

<asp:ImageButton ID="btnProcessPayment" ImageUrl="~/Images/process-payment.png" OnClientClick="return disableButton(this);" 
            runat="server" OnClick="btnProcessPayment_Click" /> 

這是我的javascript函數:

function disableButton(button) { 
      button.disabled = true; 
      return true; 
     } 

正如你所看到的我的JavaScript事件處理程序我已禁用該按鈕以防止用戶單擊按鈕兩次。但是,即使我的服務器端事件處理程序也不會因此而被解僱。我究竟做錯了什麼?

注:如果我註釋掉這一行button.disabled = true;所有的作品都很好。

+0

我剛剛注意到同樣的問題。至少我不是唯一的一個。 –

回答

5

禁用按鈕也會禁用表單提交。您需要自己提交:

function disableButton(button) { 
    button.disabled = true; 
    __doPostBack(<%= btnProcessPayment.ClientID %>,''); // need to manually submit 
    return true; 
} 

根據Waqas更新建議!

+0

這不起作用。事件處理程序仍然不會執行。最後,我使用Vinay的方法得到了它的工作原理:http://stackoverflow.com/questions/4344408/disable-submit-button-in-case-of-multiple-click-c雖然它看起來有點破解設置超時,然後禁用,但有用。 – Jaggu

+0

'button.id' - 檢查是否正確。否則,請嘗試執行'document.form1.submit()'(根據您的代碼更改它)。 – Mrchief

+1

替換button.id與<%= btnProcessPayment.ClientID%> – Waqas

2

你需要火撲滅按鈕的服務器端事件的一些這樣的事

onclick="this.disabled=true;__doPostBack('buttonclientid','');" 

function disableButton(button) { 
      button.disabled = true; 
      __doPostBack('buttonclientid',''); 
      return true; 
     } 
+0

這不起作用。請閱讀我對Chief先生的評論。 – Jaggu

0

使用這個和它的工作對我來說

__doPostBack('<%= btnSubmit.ClientID %>', ''); 

其中btnSubmit是我的按鈕的ID,我想觸發按鈕的服務器端點擊事件。有用。

相關問題