0

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

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

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

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

4

2 回答 2

2

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

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

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

于 2013-03-06T17:48:29.373 回答
1

正如该线程所说,您可以使用该功能。所以修改你的方法如下

    function cbSearchOption_SelectedIndexChanged(sender, args) {
    var x = document.getElementById('cbSearchOption').value
    if (x == 'Date')
    {
        ValidatorEnable($get(‘&lt;%=DateValidator1.ClientID %>’), true);
        document.getElementById('test').style.visibility = 'visible';
    }
    else
    {
        ValidatorEnable($get(‘&lt;%=DateValidator1.ClientID %>’), false);
        document.getElementById('test').style.visibility = 'hidden';
    }
}
于 2013-03-06T17:49:28.933 回答