Solve IE7 bug “input type=file” onchange fire twice?

不问归期 提交于 2019-11-29 21:01:48

问题


Did you ever face this IE7's bug:

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

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

when I click the input & pick a file, the alertbox shows the first time. Then I click on the blank area on the body, the alertbox shows once again. This happens even when I bind the change event to input:file with JQuery 1.6 (lastest at this moment).

How could I prevent this by the simplest way? Thanks for all suggestions!


回答1:


This is what I've made after some hard hours of "brain storming" :

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

Each time user click the input to choose file, we bind the event "change" one time with it. So the event fires exactly once everytime user want to pick a file.

And thanks god it works ! Thank you all.




回答2:


I would simply unbind the trigger once your function has ran



来源:https://stackoverflow.com/questions/7419560/solve-ie7-bug-input-type-file-onchange-fire-twice

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!