我有一个带有几个面板的asp.net webform,每个面板都有几个文本框。我目前正在使用jQuery隐藏或显示面板,基于DropDownList中的哪个项目被选中。
我遇到了一个问题,即必要的字段验证器仍在触发,即使它所附加的元素没有显示,因为它的父面板有display: none
。
当附加的元素由于CSS而没有显示时,有没有办法禁用RequiredFieldValidator?
我知道如果在服务器端设置Visible = false,则元素根本不会呈现,但出于用户体验的原因,我宁愿在客户端保留显示/隐藏逻辑。
答案 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';
}
}