2011-09-14 7 views
5

はあなたがこのIE7のバグに直面しなかった:私は、入力ファイルを選ぶ&クリックするとIE7のバグ "input type = file" onchange fireを2回解決しますか?

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

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

、alertboxは、最初の時間を示しています。その後、私は身体の空白部分をクリックすると、警告欄がもう一度表示されます。これは、changeイベントを入力:JQuery 1.6(現時点では最新)のファイルにバインドしても発生します。

どうすればこの問題を最も簡単に防ぐことができますか?すべての提案ありがとう!

+0

IE7では、最初のイベントはファイルの変更であり、フィールドがフォーカス(onblur)を失ったときに2番目のイベントが発生していると思います。 –

+0

私は一度だけ実行するようにコードを制限する変数を提案するのは嫌です。 – f0x

答えて

6

を走っていたら、私は単にこれは私が「ブレインストーミング」のいくつかのハード時間後に作られたものであるトリガをアンバインドします:への入力をクリックし

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

たびにユーザーをファイルを選択すると、イベント「変更」を一度バインドします。したがって、イベントは、ユーザーがファイルを選択するたびに1回だけ発生します。

そして、ありがとう、それは動作します!皆さん、ありがとうございました。

+0

ありがとう!私はそれを何十回もupvoteすることを望みます。私の問題を解決しました。 – SirDerpington

0

関数が

+0

そして、最初の実行後にページを訪問している間、機能を停止しますか? ;) – f0x

+0

あなたが正しい場合は、イベントを.blur()トリガーに入れてテストを行うことができます。これは、IEが2つの命令を.change() )あなたがフォーカスを失うときです – Narvath

関連する問題