如何防止双重提交链接按钮?

时间:2012-12-18 04:25:51

标签: c# asp.net .net asp.net-4.0

如何防止双重提交链接按钮。我有一个付款按钮,我想在有人点击它时立即禁用它,如果付款失败则重新启用它。我正在使用AJAX和程序化的支付后网关。

我可以使用以下代码禁用链接按钮:

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

但是如何在付款失败时重新启用它?

2 个答案:

答案 0 :(得分: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,您删除了disabled属性,以便链接按钮再次可以单击。

这是否有意义

答案 1 :(得分:0)

在后面的代码中,您可以启用和禁用代码。 点击后,首先禁用链接按钮并在付款成功时启用它。 因为上面的代码也会做服务器旅行,ajax调用没有触发。

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