2012-02-01 3 views
0

값을 드롭 다운 목록에서 선택했는지 여부에 따라 버튼을 사용/사용하지 않도록 설정하려고합니다. 자바 스크립트에서 선택한 색인을 가져 오지 못합니다. 드롭 다운리스트. 내가 onchange를 속성 추가 해요 뒤에 코드에서자바 스크립트 dropdownlist.selectedIndex ASP.net 페이지에서 오류가 발생했습니다.

<asp:DropDownList ID="ddlMyDropDownList" runat="server"> 
    <asp:ListItem> </asp:ListItem> 
    <asp:ListItem>Yes</asp:ListItem> 
    <asp:ListItem>No</asp:ListItem> 
</asp:DropDownList> 

: 여기에 드롭 다운 목록의 선언이다

ddlMyDropDownList.Attributes.Add("onchange", "enableButton();") 

는 그리고 이것은 enableButton 기능 부분까지 박탈 모습입니다 그 원인이되는 문제 :

내가 드롭 다운 목록의 값을 변경할 때마다 경고 화재를 서면으로
function enableButton() { 
    var ddl = document.getElementById('#<%= ddlMyDropDownList.ClientID %>'); 
    alert("Testing"); 
    var idx = ddl.selectedIndex; 
}; 

. 나는 그러나, IDX 라인 이후에 경고를 이동하는 경우 :

function enableButton() { 
    var ddl = document.getElementById('#<%= ddlMyDropDownList.ClientID %>'); 
    var idx = ddl.selectedIndex; 
    alert("Testing"); 
}; 

IT는 ddl.selectedIndex 어떻게 든 오류를 일으키는 것을 나타내는, 발생하지 않습니다. 왜 이것이 일어날 수 있으며 어떻게 해결할 수 있습니까? 사용자가 첫 번째 옵션 이외의 다른 옵션을 선택한 경우에만 테스트하고 싶다고 가정하면 더 쉽고/쉬운 방법이 있습니까?

+1

ddl에서 컨트롤에 대한 참조를 가져 왔습니까? var ddl이 null이거나 정의되지 않은 경우 경고는 계속 발생합니다. 아마도 거기에서 중단 점의 코드로 들어가거나 다른 속성을 시험해 볼 수 있습니다. – DOK

+0

ddl에 알리는 경우 어떻게 되나요? –

답변

2

alert(ddl)#<%= ddlMyDropDownList.ClientID %>의 요소가 없으므로 ddl이 null임을 알 수 있습니다. id 문자열의 시작 부분에서 #을 제거하십시오.

+0

해시에 좋은 점. null을 반환하는 대신 undefined를 반환 할 것입니다. –

+0

@JamieDixon 네, 당신이 옳다고 생각합니다. 고마워요. –

+0

사실 alert (ddl)는 적어도 FireFox에서는 "null"을 표시했습니다. 캐치를 가져 주셔서 감사합니다. 그것들은 제가 너무 쉽게 간과하는 종류의 오류들입니다. –

0

당신의 JS-기능을 던져 그것을 :

<script type="text/javascript"> 
    var ddlMyDropDownList = '<%= ddlMyDropDownList.ClientID %>'; 

    function enableButton() { 
    var ddl = document.getElementById(ddlMyDropDownList); 
    } 
</script> 

또는 - 더 나은 가능한 경우 - 직접 참조 통과 : 다음

ddlMyDropDownList.Attributes.Add("onchange", "enableButton(this);") 

당신이 요소를 찾을 필요가 없습니다

function enableButton(ddl) { 
    var idx = ddl.selectedIndex; 
} 
관련 문제