1

我有一个简单的网页,其中很少有 asp 面板。我从数据库中搜索记录,这些面板在页面上可见。
但是,例如,当我在文本框中输入无效值以检查 RequiredFieldValidator 是否工作正常时,会显示错误消息。但是表单上已经可见的面板不会被隐藏。
我了解,因为表单没有回发,因此这些面板没有设置为不可见。如果 requiredfieldvalitor 抛出错误,请指导我如何隐藏这些面板?

4

2 回答 2

0

通过验证器的 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>
于 2012-11-02T08:02:30.270 回答
0

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

于 2012-11-02T07:35:26.747 回答