我有一个禁用的自定义验证器,我想使用 jquery 启用它。
我怎样才能做到这一点?
下面的代码适用于 RequiredFieldValidators 但不适用于 CustomValidators :
ValidatorEnable($('#cvPass'), true);
解决办法是什么?
编辑:
我正在使用服务器端验证,而不是客户端。
当我们使用客户端验证时,启用和禁用自定义验证器没有问题。
感谢@Josh Mein 的简单代码
提前致谢
我有一个禁用的自定义验证器,我想使用 jquery 启用它。
我怎样才能做到这一点?
下面的代码适用于 RequiredFieldValidators 但不适用于 CustomValidators :
ValidatorEnable($('#cvPass'), true);
解决办法是什么?
编辑:
我正在使用服务器端验证,而不是客户端。
当我们使用客户端验证时,启用和禁用自定义验证器没有问题。
感谢@Josh Mein 的简单代码
提前致谢
我对你的尝试没有任何问题。这是一个对我有用的简单示例:
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。