2012-12-18 158 views
0

如何防止鏈接按鈕的雙重提交。我有一個付款按鈕,我想在有人點擊它時立即關閉它,並在付款失敗時重新啓用它。我正在使用AJAX和編程後付款網關。如何防止linkbutton的雙重提交?

我可以使用此代碼禁用的LinkBut​​ton:

asp:LinkButton ID="btnPayment" runat="server" onClientClick="this.disabled=true;__doPostBack(this.id,'');" Text='<%#Databinder.Eval(Container.DataItem,"Author")%>' ></asp:LinkButton> 

但是如何啓用它回來時,支付失敗?

+0

您是否使用$ .ajax()調用某個服務並通過結果解鎖鏈接?你想只啓用按鈕或使用JavaScript點擊嗎?點擊後你需要任何poastback嗎?如果你需要回傳那麼在哪一刻?解決方案可以使用jQuery嗎? –

回答

0

我想在按鈕單擊處理程序,如果付款失敗,你可以編寫代碼執行JavaScript,如:

ScriptManager.RegisterStartUpScript(this.Page, typeof(Page) , "enableBtn" , "$('[$=btnPayment].removeAttr(disabled)')" , true); 

這需要jQuery的。

另外,如果你不想使用jquery,你也可以調用document,getelementbyID。

讓我知道這是不是你想要

什麼,我有一個更多的解決方案,但似乎很討厭:

一開始

<asp:LinkButton ID="btnPayment" runat="server" Text='<%#Databinder.Eval(Container.DataItem,"Author")%>' ></asp:LinkButton> 

而且使用jQuery做這個:

$(document).ready(function() { $('id$=btnPayment').live("click", function(e) { 

    $(this).attr("disabled", "disabled"); 
    __doPostBack($(this).attr("id"),''); 
    e.preventDefault(); 
}); }); 

所以用Ajax你刪除了禁用的屬性,所以鏈接bu tton可以再次點擊。

這是否有意義

+0

謝謝,但單獨禁用禁用不應該工作。我也使用__doPostBack(this.id,'');防止回傳。 – Jack

+0

我已經添加了一個解決方案,但我不確定這是否是你想要的 – Moons

0

在後面的代碼中,您可以啓用和禁用代碼。 點擊後,首先禁用鏈接按鈕,並在支付成功時啓用它。 ,因爲上面的代碼也會做服務器旅程,ajax調用不會觸發。

btnLogin.Enabled = false; 
if (txtUserName.Text == "hh") btnLogin.Enabled = true; 
+0

這完全不是答案。你正在編寫代碼。如果用戶在執行此代碼之前按下提交按鈕2次會怎麼樣? – Jack

+0

捕獲雙擊事件如何? –

+0

然後使用綁定或解除綁定方法.. $(button).unbind('click'); – Hiral