禁用必填字段验证器

时间:2011-03-16 16:12:13

标签: asp.net forms validation requiredfieldvalidator

我有一个由几个requiredfieldvalidators组成的表单,并有2个按钮,一个添加和更新按钮。我想只将13个requiredfieldvalidators中的5个与更新按钮相关联,所有这些都可以使用添加按钮,因为我遇到了这个问题。

2 个答案:

答案 0 :(得分:1)

某些字段是否与这两个按钮相关?

如果有与添加按钮相关的字段和与更新按钮相关的字段(但不相同),则可以在相关的字段,验证器和按钮上设置相同的ValidationGroup属性

如果有与添加和更新按钮相关的字段:

  • 要么检查你的人体工程学......这听起来有点奇怪
  • 或使用自定义验证程序来检查您拥有的条件

答案 1 :(得分:0)

将控件分成2个div,然后使用javascript控制验证器。

单击“添加”启用“添加”验证器,单击“更新”,然后启用验证器进行更新。

我写了一些js代码似乎可以满足你的要求。 迭代验证器并启用您需要的这些。 然后清除屏幕,删除错误信息。

$(function() {
      hidedivTemplate();
});

function hidedivTemplate() {
      $('#divTemplate').hide();
      $('#divAuto').show();
      goThroughValidators(enableAutoDIV_Validation);
}

function hidedivAuto() {
      $('#divAuto').hide();
      $('#divTemplate').show();
      goThroughValidators(enableTemplateDIV_Validation);
}

function goThroughValidators(func) {
      for (i = 0; i < Page_Validators.length; i++) {
            var validator = Page_Validators[i];
            func(validator);
      }
      //After the iteration, clean the error info on the screen
      $("span[class='errorleft']").hide();
}

function enableAutoDIV_Validation(validatorObj) {
      switch (validatorObj.controltovalidate) {
            case "<%=AAA.ClientID%>":
            case "<%=BBB.ClientID%>":
                  ValidatorEnable(validatorObj, true);
                  break;
            default:
                  ValidatorEnable(validatorObj, false);
                  break;
      }
}

function enableTemplateDIV_Validation(validatorObj) {
      switch (validatorObj.controltovalidate) {
            case "<%=CCC.ClientID%>":
            case "<%=DDD.ClientID%>":
                  ValidatorEnable(validatorObj, true);
                  break;
            default:
                  ValidatorEnable(validatorObj, false);
                  break;
      }
}     

可在此处找到完整的代码段http://codelife.cybtamin.com/2012/08/enable-and-disable-asp-net-validator-by-javascript/