只有在父元素可见时才启用RequiredFieldValidator?

时间:2013-03-06 17:38:37

标签: c# asp.net css validation

我有一个带有几个面板的asp.net webform,每个面板都有几个文本框。我目前正在使用jQuery隐藏或显示面板,基于DropDownList中的哪个项目被选中。

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

当附加的元素由于CSS而没有显示时,有没有办法禁用RequiredFieldValidator?

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

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

作为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';
    }
}