2012-11-02 83 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>