0

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

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

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

但是,当付款失败时,我该如何重新启用它呢?

4

2 回答 2

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 属性,因此链接按钮再次变为可点击。

这有意义吗

于 2012-12-18T05:30:35.247 回答
0

在后面的代码中,您可以启用和禁用代码。单击时,首先禁用链接按钮,如果付款成功则启用它。因为上面的代码也会做服务器跳闸,ajax 调用不会触发。

btnLogin.Enabled = false;
if (txtUserName.Text == "hh") btnLogin.Enabled = true;
于 2012-12-18T07:44:49.460 回答