2012-12-18 160 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