Решить ошибку IE7 "input type = file" onchange fire дважды? - PullRequest
5 голосов
/ 14 сентября 2011

Вы когда-нибудь сталкивались с этой ошибкой IE7:

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

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

когда я щелкаю по входу и выбираю файл, окно предупреждения отображается впервые. Затем я нажимаю на пустую область на теле, окно предупреждения снова показывает. Это происходит даже тогда, когда я связываю событие изменения с input: file с JQuery 1.6 (последний в данный момент).

Как я мог предотвратить это самым простым способом? Спасибо за все предложения!

Ответы [ 2 ]

6 голосов
/ 15 сентября 2011

Это то, что я сделал после нескольких тяжелых часов «мозгового штурма»:

$('input:file').click(
    function(){
         $(this).one(
              'change',
              function(){ alert(1) /*do stuff here*/ }
         )
    }
)

Каждый раз, когда пользователь нажимает на вход, чтобы выбрать файл, мы связываем событие «изменить» один раз с ним,Так что событие запускается ровно один раз каждый раз, когда пользователь хочет выбрать файл.

И, слава богу, это работает!Спасибо всем.

0 голосов
/ 14 сентября 2011

Я просто отменил бы триггер, как только ваша функция запустилась

...