2011-02-08 3 views
1

옵션을 기반으로 선택 상자를 바꾸려면 jquery 스크립트가 있어야합니다. Firefox에서는 제대로 작동하지만 IE에서는 아무 것도하지 않지만 IE는 오류를 표시하지 않습니다. 정말 누군가가 올바른 방향으로 나를 가리킬 수 있기를 바랍니다. 어떤 도움도 대단히 감사하겠습니다 :IE의 .change 함수에 문제가 있습니다.

$(".initDealers").change(function() { 

    if ($('.initDealers option:selected').val() == "All") { 

     $('.allDealers').show(); 

     $('.initDealers').hide(); 

    } else { 

     $('.initDealers').show(); 

    } 
}); 
+0

'$ ('. initDealers 옵션 : 선택됨.) val()'this.value'로 쓸 수 있음 – rahul

+0

궁금한데, 어떤 버전의 jQuery를 사용하고 있습니까? 나는 그들이 지금이 문제를 고쳤다 고 생각했을 것이다. –

답변

1

에 한번 사용 .click 대신

Getting jQuery to recognise .change() in IE

.change의 당신은 그런 일 할 수있는 :

$('select').bind($.browser.msie ? 'click' : 'change', function() {}); 
+0

정말 고마워. IE는 .change도 지원하지 않니? – Rachel

2

IE가 인식하지 않습니다 선택 상자가 필드에서 멀리 초점을 이동할 때까지 변경되었습니다.

IE가 Windows 선택기 컨트롤을 사용하는 방식 때문입니다. 이 점에서 플러그인과 같이 효과적으로 작동합니다. 또한 계층화와 관련하여 IE에서 선택 상자와 관련된 단점을 발견 할 수 있습니다. 선택 상자는 다른 요소가있는 경우에도 항상 맨 위에 표시되는 습관을 가지고 있습니다. 이것은 또한 같은 일이 원인이기도합니다.

빠른 해결 방법은 change 이벤트가 아닌 click 이벤트를 트랩하는 것입니다. 이렇게하면 사용자가 필드에서 포커스를 바꿀 때까지 기다리지 않고 변경 작업을 수행합니다.

click 이벤트가 키보드를 사용하여 변경 한 사항을 선택하지 않기 때문에 문제가 발생해도 탭 키를 사용하여 필드로 이동하여 변경할 수 있으므로 click 이벤트는 발생하지 않습니다. 해고 됐어.

이러한 이유로 clickchange 이벤트를 모두 catch해야 할 수 있습니다. 물론 그때 당신은 아마도 같은 변화를 두 번 이상 잡을 수있는 문제로 끝납니다. 이상적이지 않고 코드를 작성해야하지만 사용자가 필드를 변경할 수있는 모든 방법을 포착 할 수있는 유일한 방법입니다.

사용자가 키보드를 사용하여 필드를 탐색하고 변경하는 경우 선택 목록을 마음의 콘텐츠까지 위아래로 이동할 수 있지만 이동하기 전까지는 트리거 된 이벤트가 발생하지 않으므로 여전히 완벽하지는 않습니다 필드에서 멀리. 이것은 피할 수없는 일입니다.

+0

응답과 자세한 내용을 보내 주셔서 감사합니다. – Rachel

관련 문제