2011-10-31 2 views
0

이전에 숨겨진 후에 내 드롭 다운을 참조하는 데 문제가 있습니다.숨겨진 드롭 다운을 다시 표시 할 수 없습니다.

그래서 일부 동작에 따라 잘 작동하는 내 드롭 다운에서 hide()를하고 있습니다. 그러나 나중에 다른 작업은 내가 드롭 다운 이득을 보여주고 싶은 곳, 내가 드롭 다운 포인터에 널 심판 받고 있어요 발생하는 경우 :

나는 사용자 작업에 따라이 드롭 다운 숨길 어떤 점에서 :

var ddlElotizType= "#" + document.getElementById('<%=ddlElotizType.ClientID %>'); 

$('#' + ddlElotizType.id).hide();  

var dropdown = document.getElementById('<%=ddlElotizType.ClientID %>'); 
    $('#' + dropdown.id).show(); 
    $('#' + dropdown.id).attr("disabled", false); 

... 
    <fieldset> 
     <p class="formLabel"><%="Car Type" %></p> 
     <p class="formField"><label id="singleCarTypeText" /><asp:DropDownList ID="ddlElotizType" runat="server" /></p> 
    </fieldset> 

은 내가하여 참조 할 때 "드롭 다운이 null"라는 JS 오류가 :

은 나중에 내가에서 쇼를 수행하기 위해()에 다시 게재하도록 노력 다른 동작에 따라 다시 이드.

내가 이미 볼 수있는 경우에만 위의 요소 ID로 드롭 다운을 참조 할 수있는 것처럼 보이지만 그것은 숨겨진 경우 중요하지 않아야한다고 생각 하겠지만 여전히 DOM 트리에 있습니다. 여전히 접근 할 수 있습니다.

+0

코드의 관련 부분을 제공해야합니다 (숨김 부분, HTML 마크 업) –

+0

여기에 Visible = "false"로 설정하여 ddlElotizType 드롭 다운을 숨기십니까? –

+0

드롭 다운이 "Visible = false"에 의해 서버 측에서 숨겨진 경우 dom에는 select 요소가 없습니다. – shakib

답변

0

아마도 사용하지 않는 방법에 도달 할 수 없기 때문일 수 있습니다. .hide()으로 숨길뿐 아니라 비활성화하지 않아도됩니다. 또한 표준 DOM 메소드와 jQuery를 혼합하고있다. jQuery는 이미 검색을 수행합니다. 요소를 표시하는 방법은 다음과 같습니다.

var dropdownId = '<%=ddlElotizType.ClientID %>'; 
$('#' + dropdownId).show(); 

요소를 숨길 때도 요소를 숨기지 마십시오.

+0

나중에 document.getElementById 중 일부에서 jQuery를 사용하도록 정리하지 않았습니다. 나중에 처리하겠습니다. – PositiveGuy

+0

나는 드롭 다운이 나타나기를 원하지만, 사용자가 이전 드롭 다운을 선택하기 전까지는 드롭 다운에 초기 값이 없기 때문에이 드롭 다운을 채우고 드롭 다운 목록에 항목을 동적으로 밀어 넣으면 사용할 수 없습니다. 그래서 나는 그것을 다시 보여주고 싶다. 그것은 나의 첫 번째 문제이며 null ref 때문이 아니다. – PositiveGuy

+0

먼저 완전히 표시되는 드롭 다운으로 시도한 다음 숨김으로 설정하고 사용 중지 한 다음 문제가있는 곳을 확인합니다. – stivlo

0

여기서는 double "#"을 사용하고 있습니다. 그걸 피하십시오.

var ddlElotizType= "#" + document.getElementById('<%=ddlElotizType.ClientID %>'); 

올바른 방법 :

편집 :

var ddlElotizTypeID='<%=ddlElotizType.ClientID %>'; 

숨기기이

$('#'+ddlElotizTypeID).hide(); 
,691 같은 : ID 저장하기

변수

다음과 같이 DropDownList를 표시하십시오.

$('#'+ddlElotizTypeID).show(); 

이렇게하면됩니다.

+0

나는 똑같은 일을하고 있지만 깨끗한 참조를 위해 먼저 변수에 밀어 넣고있다. 나는 전에 이것을 했으므로 코드가 작동한다는 것을 알았다. 변수에 #을 추가하여 변수를 사용할 수 있으며 코드에서 # <% = someControl.ClientID %>와 같은 긴 텍스트를 반복적으로 반복하지 않아도됩니다 ... var에 넣을 수 있습니다. 지정된 범위 – PositiveGuy

+0

에서 var을 재사용 한 다음 간단한 JavaScript 변수 (빠름)를 사용하고 쓸모없는 DOM 검색 (느린)을 수행하지 마십시오. 내 대답이 업데이트되었습니다. – stivlo

+0

yea 나는 정리하지 않고 모든 document.getElementById ...을 제거했습니다.이 기능의 마지막 부분에서 제가 작성하려고합니다 ... 더 오래된 코드가 있습니다. – PositiveGuy

관련 문제