タイプファイルの入力要素があります。ファイルが選択されると関数を実行できるように、変更イベントを document.ready の要素にバインドしています。これは、IE 9 以降と Chrome で非常にうまく機能します。
ただし、IE 8 のユーザーもいます。IE 8 では、最初にイベントが発生し、それ以降ファイルを選択しようとしてもイベントは発生しません。ファイル名をクリアしようとしましたが、それは助けにはなりませんでした。
うまくいけば、ブラウザーのチェックを行わず、IE 8 の場合は、ファイルを選択するたびにイベントをバインドします。
私はjsfiddleでこれを設定しています:
http://jsfiddle.net/sanpopo/pjH5p/
<input id="fileToUpload" type="file" name="fileToUpload" />
$(document).ready(function () {
addEventToBrowseFileBtn();
alert('event was bound');
});
function addEventToBrowseFileBtn() {
$('#fileToUpload').live('change', function () {
if ($('#fileToUpload').val() == "") {
return false;
}
alert('doing some code stuff');
});
};
入力アドバイスは役に立ちます。ありがとう!
いくつかのコメントに基づいてさらに調査を行った後、SO で次の投稿を見つけました: <select> の jQuery 変更イベントが IE で 発生しないように見えます。入力タイプのファイルに対して見つけた他のすべてのソリューションは、回避したいブラウザー検出を使用することを提案しています。