Simple, Slowly

ブログを引っ越ししました。http://48.jp

jQueryのchangeイベントで気をつけること

jQueryのchangeイベントですが、IEだけ挙動が少し違いました。
jQueryはv1.4.1です。


以下はファイルを選択すると、changeイベントが発生するコードの概略です。

Smple Code

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

$("#imageUpForm").change(function() {
    // 処理
});

ただしIEだと発火しない

ファイルを選択後、イベントが発火するはずなのですが、IEの場合は発火しません。
IE以外のブラウザでは、画像を選択するとinput要素からフォーカスが外れてイベントが発火します。
IEの場合はinput要素からフォーカスが外れません。


IE以外
ファイルを選択→イベント発火
IE
ファイルを選択→ほかの要素をクリック→イベント発火

対策

onchange要素に指定すればIEでも問題なく動作しました。

<input type="file" id="imageUpForm" onchange="submitImage()">


IE6~IE9で動作の確認はとれました。
jQueryは大抵のブラウザに対応しているのですが、changeイベントの挙動はちょっと怪しいですね。