使用asp.net验证控件时,禁用回发按钮

Disable button on postback when using asp.net validation controls

本文关键字:按钮 asp net 验证 控件 使用      更新时间:2023-09-26

我使用下面的代码来禁用我的按钮,当它被点击:

OnClientClick="this.disabled = true" UseSubmitBehavior="false"

问题是该页有几个asp.net验证控件。当我点击按钮时,按钮就会失效。如果任何验证控件失败,则该按钮保持禁用状态(并且永远不会启用-因为从未执行回发)。

我怀疑是否有。net方法来解决这个问题,所以我希望有某种javascript可以插入到onclientclick属性中。希望我可以检查是否验证控件返回任何错误,在我禁用按钮之前…

自己触发验证,并使用验证来确定按钮是否应该保持禁用

你的按钮(注意OnClientClick返回true/false):

<asp:Button ID="Button1" runat="server" Text="Go" OnClientClick="return validatePage(this);" ... />

你的JavaScript函数:

validatePage = function(button)
{
    var isValid = Page_ClientValidate();
    button.disabled = isValid;
    //return validation - if true then postback
    return isValid;
}

这个问题以前就有人问过。以下是我发现的一些可能对你有所帮助的答案:

JQuery验证插件重新启用验证后提交

提交后重新启用按钮

使用jQuery来启用/禁用按钮

form1上的onsubmit事件展示了如何以一种简单的方式做到这一点。试试这个:

<form id="form1" runat="server" onsubmit="setTimeout(function() {form1.btn1.value = 'Wait...'; form1.btn1.disabled = true; }, 0);">
<div>
    <asp:Label id="lbl1" runat="server" Text="Simple test:" AssociatedControlID="text1" />
    <asp:TextBox runat="server" ID="text1" />
    <asp:RequiredFieldValidator ErrorMessage="Fill the TextBox!" ControlToValidate="text1" runat="server" />
    <asp:Button Text="text" runat="server" ID="btn1" OnClick="btn1_Click" />
</div>
</form>