【问题标题】:How to do a validator for two controls dependent on each other如何为相互依赖的两个控件做一个验证器
【发布时间】:2010-11-10 22:12:51
【问题描述】:

您好,我有一个文本框和一个日期选择器控件。

验证器要求两者都不能被选中。 IE。两个空白。但是,如果一个有值,那么另一个也必须有一个值。

鉴于 CustomValidator 需要一个 RequiredFieldValidator 来触发,谁能告诉我如何实现这个?

【问题讨论】:

  • 为什么不简单地在 CustomValidator 中实现所有这些逻辑呢?它应该类似于一行代码。
  • 另外,请注意它只能在提交时进行验证,如果您在控件更改时进行验证,那么将永远无法输入值,因为其他控件将始终阻止验证。

标签: asp.net validation


【解决方案1】:

使用自定义验证器并拥有以下客户端代码...

function CheckControls(sender, args){

    if(GetElement('Control1').Value != '')
    {
      if(GetElement('Control2').Value == '')
      {
         args.IsValid = false;
         return;
      }
    }

    args.IsValid = true;
    return;

}

function GetElement(id){

    if(document.all){
        return document.all[id];
    }else {
        return document.getElementById(id);        
    }

}

【讨论】:

  • 据我所知,尽管 CustomValidator 需要一个 RequiredFieldValidator 才能运行。这是正确的吗?
  • 您错过了 control1 不是空白但 control2 是的故障状态。也不要打扰document.all,只需使用document.getElementById。 @bigjim 不,您不需要 RequiredFieldValidator 即可使用 CustomValidator
  • CustomValidator 似乎不会在没有 RequiredFieldValidator 的情况下触发 validate 方法
  • @lincolnk - 你是绝对正确的 - 它需要 Control1 和 Control2 在那里反转。我以为有些浏览器不支持 document.getElementId?
  • @BigJim - 您只需要触发以下控件属性(您需要提供一个控件进行验证。* 您始终可以使用 ValidatorHookupControlID("", GetElement( ""));
猜你喜欢
  • 2020-02-13
  • 2020-01-18
  • 1970-01-01
  • 2012-12-29
  • 2011-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-19
相关资源
最近更新 更多