如何防止双重提交链接按钮。我有一个付款按钮,我想在有人点击它时立即禁用它,如果付款失败则重新启用它。我正在使用AJAX和程序化的支付后网关。
我可以使用以下代码禁用链接按钮:
asp:LinkButton ID="btnPayment" runat="server" onClientClick="this.disabled=true;__doPostBack(this.id,'');" Text='<%#Databinder.Eval(Container.DataItem,"Author")%>' ></asp:LinkButton>
但是如何在付款失败时重新启用它?
答案 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;