2012-04-12 4 views
0

Следующий код не скрывает «info» DIV и показывает «вопросы» DIV, когда вызывается page_ClientValidate, устанавливает isValid в true. Если я устанавливаю isValid в true или false, он работает так, как ожидалось.

Почему параметр Page_ClientValidate предотвращает появление поведения hide/show?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

Вы отлажены? –

+0

Пожалуйста, добавьте код HTML ... –

+0

@TimSchmelter Да, у меня есть. Он переходит в другую часть, но DIVs не меняются - страница просто прокручивается вверх. –

ответ

1

Вы вызов функции на стороне клиента в Button ' s OnCLientClick. Затем вы хотите изменить видимость некоторых элементов управления с помощью javascript, если Page_ClientValidate возвращает true.

Проблема заключается в том, что кнопка вызывает обратную передачу, если валидатор не укусит. Откат приведет к тому, что страница будет воссоздана на сервере, так что каждое изменение клиента будет потеряно.

Так как

  • не обратная передача (возвращение false из OnCLientClick предотвратит постбэк) или видимость изменения
  • элементов управления на ServerSide (путем добавления runat="server" to your divs)
+0

Спасибо! OnClientClick = "hide(); return false;" решил это. –