2013-03-06 23 views
0

我有一个asp.net webform几个面板,每个面板都有几个文本框。我目前隐藏或显示面板使用jQuery基于DropDownList中的哪个项目被选中。只有在父元素可见时才启用RequiredFieldValidator?

我已经运行到哪里所需的字段校验仍然射击甚至当它连接到的元素没有展示,因为它的父面板的问题已display: none

有没有什么办法来禁用RequiredFieldValidator当它所连接的元素由于CSS没有显示?

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

+1

您将不得不使用自定义验证器来实现此功能。 – 2013-03-06 17:40:13

+0

我会输入您的评论作为答案本;我同意没有办法去做安倍想要的自定义验证器 – Melanie 2013-03-06 17:42:13

回答

2

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

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

(请注意,我从来没有真正尝试过这个自己,但我听说它成功地被用来在客户端上禁用验证的。)

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'; 
    } 
} 
相关问题