2013-12-16 2 views
1

드롭 다운 값이 (ddlSource에서) 변경되면 자바 스크립트가 제대로 작동하는 텍스트 상자를 숨길 수 있습니다. 다음으로, 사용자가 다른 텍스트 상자에 특정 값을 입력하면 아약스 호출을 통해 몇 개의 레이블을 채 웁니다. 양식이로드 될 때이 아약스 호출 후 숨겨진 텍스트 상자가 표시됩니다. 내가 어디로 잘못 갔니?다른 이벤트가 발생하면 자바 스크립트로 숨겨진 텍스트 상자가 표시됩니다.

<asp:DropDownList ID="ddlSource" runat="server" 
        TabIndex="80" EnableViewState="True" CssClass="Input" 
        Width="162px" onchange="DisableEnable();"> 

    <asp:ListItem Text="" Value="" /> 
    <asp:ListItem Text="x" Value="x" /> 
    <asp:ListItem Text="y" Value="y" /> 

</asp:DropDownList> 

및 enabledisable 내 자바 스크립트

function DisableEnable() { 
    var DropDown_Source = document.getElementById("<%= ddlSource.ClientID %>") 

    if (DropDown_Source.options[DropDown_Source.selectedIndex].text == "y") { 

     document.getElementById('txtSupplementNbr').style.visibility = 'visible'; 
     document.getElementById("txtDelDate").style.visibility = 'visible'; 
     document.getElementById('lblSupplementNbr').style.display = ''; 
     document.getElementById('lblDelDate').style.display = ''; 
    } 

    else { 
     document.getElementById("txtSupplementNbr").style.visibility = 'hidden'; 
     document.getElementById("txtDelDate").style.visibility = 'hidden'; 
     document.getElementById('lblSupplementNbr').style.display = 'none'; 
     document.getElementById('lblDelDate').style.display = 'none'; 
    } 
} 

OnTextChanged() 기능을 실행 뒤에 아약스 호출

<asp:UpdatePanel id="UpdatePaneltxtTrialCaseNbr" runat="server"> 
    <ContentTemplate> 
     <asp:TextBox ID="txtTrialCaseNbr" runat="server" Text="" tabindex="100" 
        Width="200px" maxlength="120" cssclass="input" 
        OnTextChanged="GetCaseSummaryCivilPlaintiffInfo" 
        onblur="SearchTrialCaseNbr();GetCasePlaintiffInfo();" 
        AutoPostBack="false" /> 
    </ContentTemplate> 
</asp:UpdatePanel> 

을 만드는 텍스트 상자, 나는 숨겨진 모든 컨트롤을 볼 수있다 전에. 어떤 도움을 주시면 감사하겠습니다.

+0

'GetCaseSummaryCivilPlaintiffInfo' 함수의 코드를 볼 수 있습니까? – Lopsided

답변

0

html은 ajax 요청으로 인해 원래 상태로 다시 렌더링됩니다. 아약스 요청 endsDisableEnable()으로 전화하여 Sys.WebForms.PageRequestManager endRequest Event을 사용하여 양식 요소의 상태를 업데이트하십시오.

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); 
function EndRequestHandler(sender, args) 
{ 
    DisableEnable(); 
} 

업데이트 패널에서 변경되는 모든 컨트롤을 넣어서 아약스 호출간에 asp.net에 의해 상태가 유지 될 수 있습니다.

+0

내가 틀렸다고 정정하되, 업데이트 패널이 콘텐츠 템플릿 내 요소 만 다시 렌더링하지는 않습니까? 이전에 javascript ajax 호출을 대신 사용했지만 javascript 변수를 사용하여 업데이트 패널 내 요소를 참조하는 javascript 변수 만 endRequest 이벤트에 다시 정의해야했습니다. – Lopsided

+0

업데이트 패널에만 텍스트 상자가 있으며 해당 개체의 변경 사항을 의미하지는 않습니다. 조금 혼란 스럽습니다. – Adil

+0

그것들은 정확하게 내 생각입니다. 그 문제는 그의'GetCaseSummaryCivilPlaintiffInfo' 함수의 버그일지도 모릅니다. 내가 본 주요 차이점은 javascript 함수 다음에'()'를 생략 한 것이지만, 이것이 코드 분할인지는 기억할 수 없다. 나는 그에게이 기능을 게시 할 것을 요청했다. – Lopsided

0

토글 링 기능에서 가시성을 표시하고 표시 할 필요가 없습니다. 주요 차이점은 가시성이 요소를 숨기지 만 요소의 위치를 ​​유지하고 제거하는 것입니다. 표시 값이 정상적으로 작동해야합니다. 여기에 간단한 토글 링 스크립트가 있습니다. 객체를 전달하면 이미 표시되었는지 여부를 확인합니다.

이제 원하는 경우에만이 기능이 호출되도록하고 싶으면 onchange가 계속 표시를 전환합니다. 나는 @ Adil의 답변이 귀하의 질문 중 그 부분을 관리 할 것이라고 믿습니다.

관련 문제