Gmailのファイルアップロード機能を再作成しようとしています-デフォルトのファイル入力タイプを使用する代わりに-その要素を非表示にし、hrefを使用してデフォルトのコントロールのクリックをシミュレートしています。
その部分はすべてのブラウザーで機能していますが、ファイルコントロールのonchangeハンドルを使用して、ファイルのアップロードを開始します(一時フォームを送信/結果をiframeに投稿します)。問題は、ファイルを選択した後、コントロールがIEで空白に見えるが、FFとChromeでは正常に機能することです。IE8以降のみをサポートする必要があります。
最後に注意が必要な点が1つあります。これは既存のフォーム内で発生するため、jQueryを使用してドキュメントの下部にフォームを追加します。
<a id ="upper">Upload</a>
このjQueryを起動します
$("#upper").click(function() {
$('#dynamic_files').click();
});
フォームを動的に追加する
$().ready(function() {
$('body').append('<form id="my_form" name="upload" action="/fil/upload"
method="POST" enctype="multipart/form-data" target="my_iframe">
<iframe id="my_iframe" name="my_iframe" src="" style="display:block;"></iframe>
<input type="file" name="files[resource_file]" id="dynamic_files"
onChange="this.form.submit();" /></form>');
});
また、IEでは、「ショートカット」リンクの代わりにデフォルトのファイルセレクターコントロールをクリックすると、このコードが機能することに注意してください。