2011-03-15 4 views
2

써드 파티 자바 스크립트 함수에서 여러개의 div와 span으로 스크립트를 다시 작성한 다음 마지막으로 찾은 클라이언트에 대한 선택 상자를 프로그래밍했습니다. div/span 요소를 선택할 때 선택한 값이 포함 된 숨겨진 요소입니다. 첫 번째 선택 상자의 값에 의존하는이 선택 상자 바로 아래에 프로그래밍 된 또 다른 선택 상자가 있습니다 (예 : 사용자가 국가를 선택한 다음 국가에 미국과 캐나다와 같은 지역이 있으면 상태 선택 상자가 나타납니다) . 어쨌든, 나는 첫 번째 선택 상자에서 새로 생성 된 숨겨진 요소에 onChange 이벤트를 추가 한 다음 숨겨진 요소 값을 기준으로 두 번째 선택 상자를 표시하거나 숨기는 자체 javascript 함수를 작성하는 것이 가장 좋습니다. 국가 선택에 따라 변경되었습니다 (제 3 자 자바 스크립트는 이미 새로 선택된 국가 값으로 숨겨진 요소 값을 업데이트합니다). 나는 jQuery 및 그냥 바로 자바 스크립트 API 일을 시도했다 그러나 아무것도 작동하는 것. 그냥 참고하시기 바랍니다, 타사 자바 스크립트 div/span 및 숨겨진 된 입력 된 필드에 내 선택 상자를 rescripts, 숨겨진 된 입력 된 필드를 id 특성이 없으므로 요소를 참조 할 이름 ("collected_data [7] [0] "). 여기에 숨겨진 요소가 누군가의 자바 스크립트 코드에 의해 프로그래밍 방식으로 변경 될 때 당신은 "변화"이벤트를받지 않습니다 내가 지금까지 시도 코드 ....HTML/JavaScript/JQuery 숨겨진 요소가 작동하지 않는 Document.onChange 변경

<script type="text/javascript"> 
jQuery(document).ready(function(){ 
    jQuery("input-country").change(function(e){ 
     console.log("testA"); 
    }); 
}) 
jQuery("input-country").change(function(e){ 
    console.log("testB"); 
}); 
jQuery(document).ready(function(){ 
    jQuery(document.forms['myForm']['collected_data[7][0]']).change(function(e){ 
     console.log("testC"); 
    }); 
}) 
jQuery(document.forms['myForm']['collected_data[7][0]']).change(function(e){ 
    console.log("testD"); 
}); 
document.forms['myForm']['collected_data[7][0]'].onchange = function(){ 
    console.log("testE"); 
}; 
document.getElementById('input-country').onchange = function(){ 
    console.log("testF"); 
} 
jQuery(document.forms['myForm']['collected_data[7][0]']).live('change',function(){ 
    console.log("testG " + jQuery(this).val()) 
}); 
jQuery('input-country').live('change',function(){ 
    console.log("testH " + jQuery(this).val()) 
}); 
jQuery(document).ready(function(){ 
    jQuery(document.forms['myForm']['collected_data[7][0]']).live('change',function(){ 
     console.log("testI " + jQuery(this).val()) 
    }); 
}) 
jQuery(document).ready(function(){ 
    jQuery('input-country').live('change',function(){ 
     console.log("testJ " + jQuery(this).val()) 
    }); 
}) 
</script> 

답변

7

입니다. 실제로 사용자 작업이있을 때만 브라우저에 의해 생성됩니다. 제 3 자 JavaScript가 숨겨진 select에서 ".change()"(jQuery 메서드)를 명시 적으로 호출하는 것이 더 좋을 것입니다.

숨겨진 요소는 분명히 사용자 상호 작용의 대상이 될 수 없습니다.

+1

+1, 나는 결코 그것을 알지 못했다. (또는 절대로 * 깨닫지 못함, 실제로는 같음) –

0

'입력 국가'는 유효한 선택자가 아닙니다. 또한 변경 이벤트에는 포커스 게인, 값 변경, 포커스 손실 (흐림)이 필요합니다. 숨겨진 입력에는 이러한 일련의 이벤트가 없으므로 값을 변경할 때 수동으로 변경을 트리거해야합니다.

관련 문제