2011-09-14 3 views
5

혹시이 IE7의 버그에 직면 했습니까?해결 IE7 버그 "입력 형식 = 파일"onchange 화재 두 번?

<input type="file" id="xxx"> 

<script> 
    $('#xxx').change(function(){ alert(1) }) 
</script> 

입력을 클릭하면 & 파일을 선택하면 경고 상자가 처음으로 표시됩니다. 그런 다음 본문의 빈 곳을 클릭하면 경고 상자가 다시 한 번 표시됩니다. 이것은 입력 이벤트에 바인딩 이벤트를 바인딩 할 때조차도 발생합니다 : JQuery 1.6 (이 시점에서 가장 최근) 파일.

어떻게하면 가장 간단한 방법으로 이것을 막을 수 있습니까? 모든 제안 주셔서 감사합니다!

+0

IE7에서는 첫 번째 이벤트가 파일 변경으로, 두 번째 이벤트는 필드가 포커스 (onblur)를 잃을 때 발생한다고 생각합니다. –

+0

코드를 한 번만 실행하도록 제한하는 변수를 제안하는 것을 싫어합니다. – f0x

답변

6

를 실행되면

+0

정말 고마워요! 내가 수십 번 upvote 수 있기를 바랍니다. 내 문제를 해결했습니다. – SirDerpington

0

나는 단순히이 내가 "뇌 밀어 낼"의 일부 하드 시간 이후 한 것입니다 트리거 바인딩을 해제 할 것 파일을 선택하면 이벤트 "변경"을 한 번 바인드합니다. 따라서 이벤트는 매번 사용자가 파일을 선택하려고 할 때마다 한 번만 발생합니다.

감사합니다. 신이 작동합니다. 다들 감사 해요.

+0

그리고 첫 번째 실행 후 페이지 방문 기간 동안 기능을 종료 하시겠습니까? ;) – f0x

+0

맞아요. 두 번 호출되면 그것을 볼 수있는 테스트 목적으로 .blur() 트리거에 이벤트를 넣는 것이 가능할 수 있습니다. IE는 .change()에 두 개의 명령을 보낼 수 있습니다.) 초점을 잃을 때입니다 – Narvath