2012-04-12 5 views
0

다음 코드는 Page_ClientValidate가 isValid를 true로 설정하면 "정보"DIV를 숨기지 않고 "질문"DIV를 표시합니다. true 또는 false로 isValid를 설정하면 예상대로 작동합니다.

Page_ClientValidate가 숨기기/표시 동작을 방지하는 이유는 무엇입니까? 'Page_ClientValidate를 호출 한 후에 Div가 숨겨지지 않습니다.

<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

을 추가하여 컨트롤 또는

  • 변화의 가시성 (다시 게시를 방지 할 수 OnCLientClick에서 false를 반환) 다시 게시하지? –

  • +0

    마찬가지로 HTML 코드를 추가하십시오 ... –

    +0

    @TimSchmelter 예, 있습니다. 다른 부분으로 이동하지만 DIV는 변경되지 않습니다. 페이지가 맨 위로 스크롤됩니다. –

    답변

    1

    당신은 Button에 클라이언트 측 함수를 호출하고 있습니다 : 나는 주요 부분으로 단축하고, div를 만 좀 더 txtBoxes 및 radioLists이있다 - 여기

    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입니다 s OnCLientClick. 그런 다음 Page_ClientValidatetrue을 반환하면 javascript를 통해 일부 컨트롤의 표시 여부를 변경하려고합니다.

    문제는 다음과 같습니다. 유효성 검사기가 물리지 않는 경우 단추가 다시 게시됩니다. 다시 게시하면 페이지가 서버 측에서 다시 만들어 지므로 모든 클라이언트 측 변경 사항이 손실됩니다.

    그러니

    • 은 서버 측에 (당신이 디버깅 적이 runat="server" to your divs)
    +0

    고마워요! OnClientClick = "hide(); false를 반환합니다." 그것을 해결했다. –

    관련 문제