2012-11-02 185 views
1

我有一个简单的网页,有几个asp面板。我从数据库中搜索记录,这些面板显示在页面上。
但是当我在文本框中输入一个无效值来检查RequiredFieldValidator是否正常工作时,会显示错误消息。但是窗体上已经可见的面板不会隐藏。
据我所知,因为表单没有发回帖子,所以这些面板没有设置为隐形。如果requiredfieldvalitor引发错误,请指导我如何隐藏这些面板?ASP.NET隐藏在requiredfieldvalidator面板

+0

请提供您的问题一些代码 –

+0

没有任何代码,我使用的文本框中的使用RequiredFieldValidator只要。 –

+0

您是否尝试过使用validationgroup属性可能会有帮助 –

回答

0

您必须禁用ClientValidation以允许回发或使用自定义JavaScript。如果可见回发是一个问题,您可以轻松使用UpdatePanels

0

通过验证的数据dependentClass附上相关元素,并把下面的表格结束标记这个脚本

<form id="form1" runat="server"> 
     <asp:TextBox ID="TextBox1" runat="server" /> 
     <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBox1" 
      Text="*" data-dependentClass="addressValidation" /> 
     <br /> 
     <asp:TextBox ID="TextBox2" runat="server" /> 
     <br /> 
     <asp:Button runat="server" Text="Click Me" /> 
     <hr /> 
     <asp:Panel runat="server" ID="Panel1" CssClass="addressValidation"> 
      Rendered at: 
      <%= DateTime.Now.ToLongTimeString() %> 
     </asp:Panel> 
</form> 
<script type="text/javascript"> 
     var originalValidatorUpdateDisplay = ValidatorUpdateDisplay; 
     ValidatorUpdateDisplay = function (val) { 
      originalValidatorUpdateDisplay.call(null, val); 

      var dependentClass = val.getAttribute("data-dependentClass"); 
      if (dependentClass) { 
       elements = document.getElementsByClassName(dependentClass); 
       for (var i = 0; i < elements.length; i++) { 
        elements[i].style.display = val.isvalid === false ? "none" : ""; 
       } 
      } 
     } 
</script>