1

我有一个禁用的自定义验证器,我想使用 jquery 启用它。
我怎样才能做到这一点?
下面的代码适用于 RequiredFieldValidators 但不适用于 CustomValidators :

        ValidatorEnable($('#cvPass'), true);

解决办法是什么?
编辑:
我正在使用服务器端验证,而不是客户端。
当我们使用客户端验证时,启用和禁用自定义验证器没有问题。
感谢@Josh Mein 的简单代码

提前致谢

4

1 回答 1

1

我对你的尝试没有任何问题。这是一个对我有用的简单示例:

HTML

<asp:TextBox runat="server" ID="txt_Test" />
<asp:CustomValidator runat="server" ID="val_Test" ValidateEmptyText="true" ClientValidationFunction="MyValidation" ControlToValidate="txt_Test" ErrorMessage="Test"></asp:CustomValidator>
<asp:Button runat="server" ID="btn_Test" Text="Test" onclick="btn_Test_Click" />
<input type="button" value="disable validator" onclick="disableValidator()" />
<input type="button" value="enable validator" onclick="enableValidator()" />

Javascript

function enableValidator() {
    ValidatorEnable($('[id$=val_Test]')[0], true);
}

function disableValidator() {
    ValidatorEnable($('[id$=val_Test]')[0], false);
}

function MyValidation(sender, args) {
    if ($('[id$=txt_Test]').val() == "")
        args.IsValid = false;
}

编辑:有了你的新信息,我相信我知道问题出在哪里。在服务器验证开始之前,页面会重新加载,这会导致验证器被设置为禁用,因为根据服务器是其最后一个已知状态。这是因为验证器不是将其值回发到服务器的控件。您可以使用可以告诉服务器验证控件的值设置 hiddenField。

于 2012-06-28T18:42:10.773 回答