【问题标题】:Only enable RequiredFieldValidator when parent element is visible?仅在父元素可见时启用RequiredFieldValidator?
【发布时间】:2013-03-06 17:38:36
【问题描述】:

我有一个带有几个面板的 asp.net 网络表单,每个面板里面都有几个文本框。我目前正在使用 jQuery 隐藏或显示面板,具体取决于选择了 DropDownList 中的哪个项目。

我遇到了一个问题,即必填字段验证器仍在触发,即使它附加到的元素没有显示,因为它的父面板有 display: none

当它附加到的元素由于 CSS 而没有显示时,有什么方法可以禁用RequiredFieldValidator?

我知道如果在服务器端设置 Visible=false,则元素根本不会呈现,但出于用户体验的原因,我更愿意将显示/隐藏逻辑保留在客户端。

【问题讨论】:

  • 您必须使用自定义验证器来实现此功能。
  • 我会输入您的评论作为答案 Ben;我同意没有自定义验证器,没有办法做 Abe 想要的事情

标签: c# asp.net css validation


【解决方案1】:

我同意自定义验证器是最好的,但如果您确实需要在客户端执行此操作,您可以使用 ValidatorEnable 函数。

ValidatorEnable(document.getElementById("<%= RequiredFieldValidator.ClientID %>"), false);

(请注意,我自己从未真正尝试过这个,但我听说它成功地用于禁用客户端的验证器。)

【讨论】:

    【解决方案2】:

    作为this thread says,您可以使用该功能。所以修改你的方法如下

        function cbSearchOption_SelectedIndexChanged(sender, args) {
        var x = document.getElementById('cbSearchOption').value
        if (x == 'Date')
        {
            ValidatorEnable($get(‘<%=DateValidator1.ClientID %>’), true);
            document.getElementById('test').style.visibility = 'visible';
        }
        else
        {
            ValidatorEnable($get(‘<%=DateValidator1.ClientID %>’), false);
            document.getElementById('test').style.visibility = 'hidden';
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-11
      • 2013-10-01
      • 1970-01-01
      • 2018-03-10
      • 2014-05-29
      相关资源
      最近更新 更多