Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Solve IE7 bug "input type=file" onchange fire twice?

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!

like image 201
vantrung -cuncon Avatar asked Sep 14 '11 16:09

vantrung -cuncon


1 Answers

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.

like image 68
vantrung -cuncon Avatar answered Nov 11 '22 14:11

vantrung -cuncon