C# 仅在父元素可见时启用RequiredFieldValidator?

C# 仅在父元素可见时启用RequiredFieldValidator?,c#,asp.net,css,validation,C#,Asp.net,Css,Validation,我有一个asp.net网络表单,其中有几个面板,每个面板中都有几个文本框。我目前正在使用jQuery隐藏或显示面板,它基于DropDownList中的哪个项目被选中 我遇到了一个问题,即所需的字段验证器仍在启动,即使它所连接的元素没有显示,因为它的父面板有display:none 当RequiredFieldValidator所附加的元素由于CSS而不显示时,有没有办法禁用它 我知道,如果在服务器端设置Visible=false,元素将根本不会呈现,但出于用户体验的原因,我更愿意在客户端保留显示

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

我遇到了一个问题,即所需的字段验证器仍在启动,即使它所连接的元素没有显示,因为它的父面板有
display:none

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


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

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

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

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

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

ValidatorEnable(document.getElementById("<%= RequiredFieldValidator.ClientID %>"), false);
ValidatorEnable(document.getElementById(“”),false);
(请注意,我本人从未实际尝试过此功能,但我听说它已成功用于在客户端禁用验证器。)

。因此,请修改您的方法,如下所示

    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';
    }
}
功能cbSearchOption\u选择的索引已更改(发送方,参数){
var x=document.getElementById('CBSearchAction')。值
如果(x==‘日期’)
{
ValidatorEnable($get(“”),true);
document.getElementById('test').style.visibility='visible';
}
其他的
{
ValidatorEnable($get(“”),false);
document.getElementById('test').style.visibility='hidden';
}
}
您可以使用该功能。因此,请修改您的方法,如下所示

    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';
    }
}
功能cbSearchOption\u选择的索引已更改(发送方,参数){
var x=document.getElementById('CBSearchAction')。值
如果(x==‘日期’)
{
ValidatorEnable($get(“”),true);
document.getElementById('test').style.visibility='visible';
}
其他的
{
ValidatorEnable($get(“”),false);
document.getElementById('test').style.visibility='hidden';
}
}

您必须使用自定义验证器实现此功能。我将输入您的评论作为答案;我同意,除了自定义验证器之外,没有办法实现Abe想要的功能。您必须使用自定义验证器实现此功能;我同意,除了自定义验证器之外,没有任何方法可以实现Abe想要的