jQuery在页面上禁用/重新启用验证器

时间:2010-12-20 19:11:07

标签: asp.net jquery

当我需要禁用/重新启用验证器时,我通常使用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); } 


      }); 

如果有的话,最好的方法是什么?

2 个答案:

答案 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 */ }