IEにおけるinput type=file エレメントのコピー時の注意点

clone()メソッド

エレメントのコピーにはclone()メソッドを使用します。

html

<input type="file" class="ImageFileInput">

javascript

var real = $(".ImageFileInput");
var cloned = real.clone(true);cloned.insertAfter(real);

IEではfileの中身がコピーされない

input type=file の場合、エレメントそものはclone()でコピーされますが、
inputに添付したファイルの値はIEではコピーされません(IE11で確認)。
console.log(cloned.val()) ; //IEだと""(カラ),肝心の中身がない!
console.log(cloned.[0].files[0].name) ; //IEでも引き継がれている
console.log(cloned.[0].files[0].size) ; //IEでも引き継がれている


回避策:値だけ直接コピーする

cloned.val( real.val() ) ;

このブログの人気の投稿

ActionFormのresetメソッド

ビルド・パスのエラーが解決されるまで、プロジェクトをビルドできません

ORCLE SQL '_' アンダースコアについて