如何使用jquery启用禁用的自定义验证器

时间:2012-06-28 18:12:17

标签: c# jquery asp.net customvalidator

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

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

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

提前致谢

1 个答案:

答案 0 :(得分: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()" />

<强> Javscript

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,其值可以告诉服务器验证控件。