2014-04-23 100 views
0

我想在用戶單擊它後禁用鏈接按鈕。
但我在這裏做錯了。如何在單擊後禁用鏈接按鈕(無JQuery)

點擊後按鈕仍然有效。我究竟做錯了什麼?

<asp:LinkButton ID="submit" runat="server" 
     CssClass="button" 
     Text="OK" 
     OnClick="Submit_Click" 
     OnClientClick="this.disabled=true"> 
</asp:LinkButton> 
+0

如果它正在做回發,我相信該按鈕將被恢復爲啓用狀態。您可能希望在代碼隱藏而不是客戶端中禁用它。 – Smeegs

+0

不。在後面的代碼中,我設置enabled = false,回發之後它被禁用。但用戶可以在提交之前快速點擊按鈕並進行多項操作,我需要防止這種情況。 – 1110

+0

這是有道理的。你在控制檯中遇到錯誤嗎? – Smeegs

回答

-2

試試這個Java腳本函數,

在您的OnClientClick

<asp:LinkButton ID="submit" CssClass="button" Text="OK" onclick="myButtonId_Click(this);return false;" ></asp:LinkButton> 

附加功能,

protected void myButtonId_Click(target) { 
    target.disabled = true; 
    } 
+0

隱藏按鈕,不會禁用它,只有在頁面重新加載後纔會有所作爲。 –

+0

更新我的答案檢查它適合你。 – Rorschach

+0

這仍然工作服務器端後回發,而不是之前OP請求 –

0

使用JavaScript調試器來檢查方法被調用。 LinkBut​​tons是由服務器生成的JavaScript動力錨標籤&因此可能會非常棘手。

1

只需將return false;添加到您的JavaScript中即可。原因是你的asp:LinkButton得到這樣的渲染。

<a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$submit','')" 
    class="button" 
    id="ContentPlaceHolder1_submit" 
    onclick="this.disabled = true;return false;"> 
OK</a> 

所以,如果你不給返回false,這些事情發生

  1. 它觸發onclick事件 和禁止錨標記。 (錨標記沒有禁用的屬性。buttoninput type="submit"具有該屬性。)
  2. 它移動到觸發回傳並點擊了服務器端單擊事件
  3. 是有回傳,客戶端的JavaScript禁用不會持續(即使它是一個按鈕)

通過強制return false你問的asp:LinkButton不要做了處理。

P.S:我一直在使用PostBack Ritalin來防止多次點擊asp:Button。國際海事組織,它在這種情況下絕對值得一看。