当我需要禁用/重新启用验证器时,我通常使用jQuery代码:
ValidatorEnable($('[id*=DueDateRequiredValidator]')[0], false);
并重新启用它:
ValidatorEnable($('[id*=DueDateRequiredValidator]')[0], true);
var validator = $('[id*=DueDateRequiredValidator]')[0];
validator.isvalid = true;
ValidatorUpdateDisplay(validator);
它有效。但是现在我需要禁用/重新启用大量验证器,但只需要验证器的一部分,而不是页面上的整个验证器。他们中有太多人用“id”来引用每个验证器。
我尝试了类似这样的东西,但它不起作用,不知道为什么:
$.each(Page_Validators, function(index, validator) {
if ( validator.CssClass == "noinjuries" )
{ ValidatorEnable(validator, false); }
});
如果有的话,最好的方法是什么?
答案 0 :(得分:0)
我找到了以下javascript代码on a blog,它使用ValidationGroup切换验证控件,但您可以轻松删除if (Page_Validators[i].validationGroup == validationGroupName)
行并切换整个Validators集合。
您必须在“ValidatorEnable”方法调用后添加自己的启用代码。
function HasPageValidators() {
var hasValidators = false;
try {
if (Page_Validators.length > 0) {
hasValidators = true;
}
}
catch (error) {
}
return hasValidators;
}
function ValidationGroupEnable(validationGroupName, isEnable) {
if (HasPageValidators()) {
for (i = 0; i < Page_Validators.length; i++) {
if (Page_Validators[i].validationGroup == validationGroupName) {
ValidatorEnable($('[id*=DueDateRequiredValidator]')[0], true);
}
}
}
}
编辑:Victor,根据您的评论,我认为您可以通过向控件添加属性来获得相同的结果。这将在不使用ValidationGroup的情况下对它们进行分组,您可以从JavaScript访问属性。
在您的代码中,您需要设置验证控件的属性,如下所示:
SampleValidator1.Attributes.Add("myGroupName", "sample1");
SampleValidator2.Attributes.Add("myGroupName", "sample2");
然后,在Javascript函数中,而不是这行`if(Page_Validators [i] .validationGroup == validationGroupName){',请使用:
if (Page_Validators[i].getAttribute('myClass') == 'sample1') {
如果没有群组,那应该可以得到你想要的东西,但很抱歉 - 你必须设置属性
最后一次编辑:我正在努力实现这一目标。我还没有尝试过,但是如果你想在JavaScript中获取一个对象的CSS类,它是.className
,而不是.class
。在我之前的任何建议之前尝试一下。
答案 1 :(得分:0)
是的,先试试这个
if ($(validator).hasClass('noinjuries')) { /* disable validator */ }