简体   繁体   English

ASP.NET隐藏RequiredFieldValidator上的面板

[英]ASP.NET hide Panel on requiredfieldvalidator

I have a simple web page that has few asp panels. 我有一个简单的网页,几乎没有asp面板。 I make a search of record from database and these panels are made visible on the page. 我从数据库中搜索记录,这些面板在页面上可见。
but when, say, i enter an invalid value in the textbox to check whether the RequiredFieldValidator is working fine or not, the Error message is displayed. 但是,例如,当我在文本框中输入无效值以检查RequiredFieldValidator是否工作正常时,将显示错误消息。 But the Panels that are already visible on the form are not hidden. 但是,窗体上已经可见的面板不会被隐藏。
I understand, that because the form is not making a post back, therefore these panels are not set to invisible. 我知道,由于表单没有回发,因此这些面板未设置为不可见。 Can something please guide me as to how to hide these panels if the requiredfieldvalitor throws an error? 如果requiredfieldvalitor抛出错误,请问有什么方法可以指导我如何隐藏这些面板?

You would either have to disable ClientValidation to allow a postback, or use custom JavaScript. 您可能必须禁用ClientValidation以允许回发,或使用自定义JavaScript。 If a visible postback is an issue, you can easily use UpdatePanels . 如果出现可见的回发问题,则可以轻松使用UpdatePanels

Attach dependent elements by data-dependentClass of validator and place this script below form closing tag 通过验证程序的data-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>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM