2016-05-31 47 views
0

我有一個簡單的確認對話框,當客戶嘗試提交付款時將打開該對話框。如果他們點擊「取消」,它會將他們帶回asp頁面重新輸入他們的信息,但如果他們點擊「提交付款」,將會觸發一個隱藏的按鈕,在後面的代碼中調用方法來處理付款。我遇到的問題是,在對話框關閉之前,有些客戶顯然能夠點擊「提交付款」按鈕兩次。有什麼我可以做我的一面,以防止按鈕被點擊兩次?JQuery對話框Double Posting

<script type="text/javascript"> 
function ShowPaymentConfirmation() { 
    $(function() { 
     $("#dialog-ReviewPmt").dialog({ 
      resizable: false, 
      draggable: false, 
      dialogClass: "noclose", 
      closeOnEscape: false, 
      modal: true, 
      width: '650px', 
      "title": "Review Payment", 
      buttons: { 
       "Submit Payment": { "class": "SubmitPaymentDialogButton", click: function() { 
        this.disabled = true; 
        $(this).dialog("close"); 
        $("#<%=PaymentSubmit.ClientID%>").click(); 
       } 
       }, 
       "Cancel": { "class": "CancelRedDialogButton", click: function() { 
        $(this).dialog("close"); 
       } 
       } 
      } 
     }); 
    }); 
    return false; 
}; 

+0

爲什麼不能在第一次點擊時關閉它? – Bradley

+0

你的意思是禁用隱藏按鈕或禁用對話框按鈕?令我困惑的是,這個按鈕應該做的第一件事就是關閉對話框,所以我想知道其他客戶端控件的效果如何。我會嘗試添加您的建議作爲額外的預防措施,但遺憾的是我無法複製該問題,因此難以測試潛在的修復程序。 – CDurand

回答

0

對不起,我不能添加評論,但我不能重現該問題。無論我多快雙擊一個按鈕,它都不會觸發它的點擊回調兩次。

是否有可能您的ShowPaymentConfirmation()函數被調用兩次?

+0

我不相信我的ShowPaymentConfirmation()函數被調用兩次,因爲只有一個按鈕調用該函數。重現這個問題確實是我最大的問題,但我想我已經想出了一個後端解決方案來防止這種情況發生。代碼中的方法從名爲「ReviewPayment」的會話變量中獲取信息以處理付款。當我點擊「提交付款」並將其設置爲「ConfirmPayment」時,我想添加一個步驟來清除「ReviewPayment」。這樣的價值不會存在第二次點擊。 – CDurand