2009-08-13 100 views
3

我試圖阻止用戶雙擊我正在更新的頁面的提交按鈕。問題在於需要進行服務器端驗證,以確定用戶是否必須先做任何更新,然後才能繼續。我目前在我的表單提交事件中有以下代碼。防止雙擊服務器端驗證

<asp:Button ID="SubmitPayment" runat="server" OnClientClick="this.disabled='true';" UseSubmitBehavior="false" OnClick="SubmitPayment_Click" Text="Submit" /> 

如果這成爲一個問題,那麼頁面沒有通過驗證。在這種情況下,我試圖啓用按鈕的所有內容都失敗了。在提交按鈕被禁用的情況下,他們很難重新提交更正的信息。我在驗證結束時嘗試了以下兩種方法以重新啓用它。

SubmitPayment.Enabled = true; 
SubmitPayment.Attributes.Add("disabled", "false); 

如何重新啓用此控件?這是在Visual Studio 2005.預先感謝。

CNC中 ,我用瞭如下的方法。我添加了一個禁用的附加誘餌按鈕,並將顯示CSS屬性設置爲無。然後,我使用javascript來隱藏提交按鈕並在OnClientClick事件中顯示誘餌按鈕。最後,服務器端方法的結束會更新按鈕上的css屬性,以隱藏並隨後顯示它們。

代碼段如下。再次感謝您的幫助

function PreventDoubleClick() 
    { 
     var sp = document.getElementById("SubmitPayment"); 
     var db = document.getElementById("DecoyButton"); 
     sp.style.display = "none"; 
     db.style.display = "inline"; 
    } 

<asp:Button ID="SubmitPayment" runat="server" OnClientClick="javascript:PreventDoubleClick();" UseSubmitBehavior="false" OnClick="SubmitPayment_Click" Text="Submit" /> 
<asp:Button ID="DecoyButton" Enabled="false" runat="server" style="display:none;" Text="Please Wait..."/> 

DecoyButton.Style.Add("display", "none"); 
SubmitPayment.Style.Add("display", "inline"); 
+0

因此SubmitPayment.Attributes.Add(「disabled」,「true」);或SubmitPayment.Attributes.Remove(「disabled」,「false」);不做這項工作? 你有一個奇怪的問題。如何處理雙擊任何事情的白癡(當然,這不是他們的錯,而是桌面界面設計師的錯誤)。 – mcandre 2009-08-13 20:29:17

回答

1

我以前曾經有過類似的問題,我想出了最好的解決辦法是隱藏按鈕,並用請稍候(或確認)消息替換它。如果驗證失敗,您可以再次顯示該按鈕

+0

不能說這是我最喜歡的方法,但它是我能找到的唯一工作。感謝您的建議。 – 2009-08-14 01:31:18

+0

事實證明,在我的帖子中添加的解決方案還有一個其他問題。如果多次運行,誘餌按鈕將永久保留在頁面上。任何想法如何解決這個問題? – 2009-08-24 04:26:02