1

ASP パネルがほとんどない単純な Web ページがあります。データベースからレコードを検索すると、これらのパネルがページに表示されます。
しかし、たとえば、テキスト ボックスに無効な値を入力して 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 に答える