INPUT TYPE = FILEタグのクリアでハマった。
INPUT TYPE="file"入力フィ-ルドのクリアでハマったのでメモ。
jQuery使用してます。
INPUT TYPE="file"に「.change()」を付与して、
その中のfunctionで「upload.js」の処理を走らせていたのですが、
IEで問題発生
一度ファイルパスを指定した後、同じファイルパスをもう一度指定すると、「.change()」の処理が走らない。
ならば毎回ファイルパスを消せばいいじゃん!!
と思ったのですが、
INPUT TYPE="file"はセキュリティの問題から他のタグと同じようにValueの値が書き込めないらしい。
IEだけValueを空にできない。
色々試行錯誤した結果、
元の処理
$('#inputFileのID').change(function() {
//upload.jsの処理あれこれ
});
を
$("#inputFileを含むPタグ").live("change", function(){
//upload.jsの処理あれこれ
});
に変更して、
upload.jsの処理あれこれの最後で
$("#inputFileを含むPタグ").after($("#inputFileを含むPタグ").clone(true));
$("#inputFileを含むPタグ").remove();
こんな感じで丸ごと作り直す事で無事解決。
clone()はtrueにしておかないとイベントがコピーされないので注意。