2012-04-12 63 views
0

下面的代碼不會隱藏「info」DIV,並在Page_ClientValidate被調用時將「isValid」設置爲true來顯示「questions」DIV。如果我將isValid設置爲true或false,則按預期工作。

Page_ClientValidate爲什麼阻止隱藏/顯示行爲發生?Div在調用Page_ClientValidate後不會隱藏

function hide() { 
     var isValid = Page_ClientValidate('validInfo'); 
     if (isValid) { 
      if (!$('[id$=chkConfirm]').is(':checked')) 
      { alert("Please confirm and agree with conditions"); } 
      else { 
       $('#info').hide(); 
       $('#questions').show(); 
      } 
     } 
    }  

下面是HTML - 我把它縮短到主要部件和只有一些txtBoxes和radioLists在DIVS:

<div id="info"> 
    <asp:TextBox ID="tBoxTradingName" runat="server" Width="200"></asp:TextBox> 
    <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="tBoxTradingName" 
     ValidationGroup="validInfo">Required</asp:RequiredFieldValidator> 
    <asp:CheckBox ID="chkConfirm" Text=" I confirm that the information provided above is accurate." 
     runat="server" /> 
    <asp:Button ID="btnNext" Text="Next >>" runat="server" OnClientClick="hide()" Width="100" 
     CausesValidation="true" ValidationGroup="validInfo" /> 
</div> 
<div id="questions" style="display:none;"> 
    <div class="label"> 
     Do you trade as a 
    </div> 
    <asp:RadioButtonList ID="rBtnTradeAs" runat="server"> 
     <asp:ListItem>Sole Proprietor</asp:ListItem> 
     <asp:ListItem>Company</asp:ListItem> 
     <asp:ListItem>Closed Corporation</asp:ListItem> 
     <asp:ListItem>Trust</asp:ListItem> 
     <asp:ListItem>Other (please specify)</asp:ListItem> 
    </asp:RadioButtonList> 
    <asp:TextBox ID="txtBoxTradeAs" runat="server" Width="200"></asp:TextBox> 
    <asp:RequiredFieldValidator ID="RequiredFieldValidator30" runat="server" ControlToValidate="rBtnTradeAs" 
     ErrorMessage="Required"> 
    </asp:RequiredFieldValidator> 
</div> 
+0

你調試? – 2012-04-12 14:02:34

+0

請添加HTML代碼以及... – 2012-04-12 14:05:40

+0

@TimSchmelter是的,它進入了其他部分,但DIV不會改變 - 頁面只是滾動到頂部 – 2012-04-12 14:11:20

回答

1

你在Button調用客戶方的功能「 s OnCLientClick。然後,如果Page_ClientValidate返回true,則希望通過javascript更改一些控件的可見性。

問題是:如果沒有驗證器咬住,按鈕將導致回發。回發將導致頁面在服務器端重新創建,以便每個客戶端更改都會丟失。

因此,無論

  • 不回傳(返回從OnCLientClickfalse將阻止回發)控件或
  • 變化可視性服務器端(通過添加runat="server" to your divs)
+0

謝謝! OnClientClick =「hide(); return false;」解決了它。 – 2012-04-12 14:57:01