2010-10-19 173 views
1

我有在DB插入上提交按鈕的點擊數據的形式,但問題是當客戶點擊按鈕多次發送其創建的多個請求裝置相同的數據,不得爲同一時間多個按鈕點擊事件。多提交按鈕點擊問題?

我試圖禁用按鈕時客戶端點擊提交按鈕第一次,但在此之後它不調用服務器點擊的事件處理,一旦它得到了禁用不火的服務器click事件。

如何處理這種多重點擊問題..

我用下面的代碼來禁用按鈕

<script type="text/javascript"> 
    function checkAuth(obj) 
    { 
     if(Page_ClientValidate("ValidationGroupName")) 
      obj.disabled=true;  
    } 
</script> 

     <asp:Button ID="btnSubmit" runat="server" Text="Submit" 
OnClick="btnSubmit_click" OnClientClick="checkAuth(this)" CssClass="FormButton" 
ValidationGroup="ValidationGroupName" /> 
+2

重複:http://stackoverflow.com/questions/50426/preventing-accidental-double-clicking-on-a

var formhandler = function() { var submit, isSubmit = false; submit = function(){ // flop and return false once by the use of operator order. return isSubmit != (isSubmit = true); }; return { submit: submit }; }(); // <-- use direct invcation to keep the internal variables "static" 

通過將其固定 - 按鈕 – 2010-10-19 10:13:33

+1

隨着最近添加的代碼,這不再是一個重複(不是你有任何方式知道這一點)。 – jwiscarson 2010-10-19 14:34:13

回答

5

不要禁用按鍵,只要防止第二提交。

這個小腳本執行的工作,但它假定有在某一個時刻回傳。

document.forms[0].onsubmit = formhandler.submit;  

OnClientClick = "formhandler.submit()"; 
+0

整潔。因此,建議連接問題的用戶第三次點擊... – giraff 2011-07-28 20:04:23

+0

@Caspar Kleijne:此代碼是否可以與Imagebutton一起使用,或者它需要帶有'submitBehaviour = true'的按鈕。 我想使用這個代碼與一個圖像按鈕傳輸money.Is這足以防止多個點擊瀏覽器或網絡掛起的情況下,客戶端不斷點擊?? – 2012-10-08 16:31:09

+0

它可以與任何附帶onsubmit事件處理程序的元素一起使用。 – 2012-10-11 11:50:57

0

所有您需要做的是有一些客戶端的JavaScript它禁用按鈕。類似的東西來:

document.myform.mybutton.disabled = true; 

如果你在一個函數把這個包,並設置按鈕的onClientClick屬性觸發此。一旦它被點擊,它被禁用 - 但仍然生成對服務器的請求。

事件didnt開除你上面建議的方式的原因可能是因爲您禁用服務器端(非客戶端如這裏)

+0

使用這種技術時必須小心。例如,如果請求使用AJAX,並且由於連接問題而失敗,則用戶最終會遇到破損的網站。還有其他原因的多向(比如刷新目標頁面) – CodesInChaos 2010-10-19 13:27:49

+0

真實的 - 但這個問題並沒有一個AJAX標籤 – 2010-10-19 13:37:20

+0

考慮的問題我加,我用禁用按鈕的代碼。 – Azhar 2010-10-19 13:51:56

1

中包括一個<input type="hidden">領域的唯一ID。然後在服務器上檢查請求是否已被處理。

正如你可以生成一個GUID的ID。那麼你只需要一些結構來收集當前有效的ID。例如一個字典。然後,您可以不時從結構中清除舊的ID,並在使用時刪除它。

+0

你是如何做到這一點的? – 2010-10-19 13:37:57

+0

我很想和這個一起去,但請你詳細說明一下嗎? – 2010-10-19 14:04:48