如何防止重复提交链接按钮。我有一个付款按钮,我想在有人点击它时立即禁用它,并在付款失败时重新启用它。我正在使用 AJAX 和程序化发布到支付网关。
我可以使用以下代码禁用链接按钮:
asp:LinkButton ID="btnPayment" runat="server" onClientClick="this.disabled=true;__doPostBack(this.id,'');" Text='<%#Databinder.Eval(Container.DataItem,"Author")%>' ></asp:LinkButton>
但是,当付款失败时,如何启用它?
我认为在按钮点击处理程序中,如果付款失败,您可以编写代码来执行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 中,您删除了禁用的属性,以便链接按钮再次变得可单击。
这有意义吗
在代码隐藏中,可以启用和禁用代码。单击后,首先禁用链接按钮,如果付款成功,则启用它。因为上面的代码也会做服务器跳闸,所以 Ajax 调用不会触发。
btnLogin.Enabled = false;
if (txtUserName.Text == "hh") btnLogin.Enabled = true;