使用jQuery/javascript启用(但不触发)RequiredValidator

使用jQuery/javascript启用(但不触发)RequiredValidator,javascript,jquery,asp.net,requiredfieldvalidator,Javascript,Jquery,Asp.net,Requiredfieldvalidator,我有一个可能有10个字段的表单。其中一个字段是复选框,默认为未选中,并且表单上的许多字段只有在选中该复选框时才启用+必需。我已经成功地找到了如何调用ValidatorEnable(requiredFieldValidator,true)来处理这个问题(我已经检查了许多关于这个主题的StackOverflow问题) 然而,我有一个问题,我还没有看到解决。当我的用户选中该复选框并且字段现在已启用且为必需时,我的验证器立即触发其“This field is required”消息。这是在用户有机会键入

我有一个可能有10个字段的表单。其中一个字段是复选框,默认为未选中,并且表单上的许多字段只有在选中该复选框时才启用+必需。我已经成功地找到了如何调用ValidatorEnable(requiredFieldValidator,true)来处理这个问题(我已经检查了许多关于这个主题的StackOverflow问题)


然而,我有一个问题,我还没有看到解决。当我的用户选中该复选框并且字段现在已启用且为必需时,我的验证器立即触发其“This field is required”消息。这是在用户有机会键入任何内容之前,所以这不是一个很好的用户体验。我可以告诉验证器什么,以便它知道,即使我正在启用它,“这个字段还没有焦点,所以在有人故意将其留空之前不要显示错误消息”

在提交之前不要启用它们,我认为您应该能够在submit上启用它们,而不是使用RegisterOnSubmitStatement调用的javascript函数,它将在验证afaik之前启动


这将节省您发回的时间。

我遇到了同样的问题,并使用以下代码解决了它:

var myValidator = document.getElementById('<%=myValidator.ClientID %>');
ValidatorEnable(myValidator, true);
myValidator.isvalid = true;
ValidatorUpdateDisplay(myValidator);

请参阅默认情况下所需的字段验证器已启用(如果未启用,则启用)。因此,只使用那些需要禁用它的条件,您就完成了

var myValidator = document.getElementById('<%=myValidator.ClientID %>');
ValidatorEnable(myValidator, true);
myValidator.isvalid = true;
ValidatorUpdateDisplay(myValidator);
function myValidatorEnabler(validator, enable) {   
    validator.enabled = enable;
    ValidatorUpdateDisplay(validator);
}