ここにあるjqueryマルチファイルプラグインを使用しています:
http://www.fyneworks.com/jquery/multiple-file-upload/
過去に使用して問題はありませんでしたが、動的にロードされたフォームで使用しようとすると、奇妙な問題が発生します。
この記事に従って、フォームをロードするときに関数を正しくバインドしているため、これはここに投稿された問題とは関連しているとはいえ、異なる問題であることを理解してください。
入力イベントを動的にロードされたフォームから jQuery マルチファイルにバインドできません
$('#reportWindow').on('click', '#continueReport', function () {
var data = $('.reportForm').serializeObject();
$('<div/>').load('/Forms/report.aspx', data, function () {
doReportForm(this);
});
});
ASPX ファイルは、上記のようにdiv
jquery を使用してロードされています。関数は、次のように、動的に生成された HTML へのさまざまなバインディング メソッドを呼び出すことです。load
doReportForm
function doReportForm(ele) {
$(ele).makeModal('', 800);
FB.XFBML.parse();
checkLogin();
clearNetIds($('#reportForm2'));
$("#datePicker").datepicker({
changeMonth: true,
changeYear: true
});
$('[class*="toolTip"]').setupTip();
$(".multi").MultiFile(); // input[type=file]
$('#right').on('click', '#savePost', function () {
var data = $('.reportForm2').serializeObject();
});
};
そこの最初の行$(ele).makeModal('', 800);
は、モーダルウィンドウを作成するために作成した単なるjQuery拡張であるため、この要素がDOMに追加されるポイントであり、数行下でMultiFile
プラグインをバインドします。$(".multi").MultiFile();
これを初めて実行すると、正常に動作します。しかし、ユーザーがモーダル ウィンドウを閉じてからフォームを再度読み込もうとすると、エラーが発生します。
Uncaught TypeError: Cannot call method 'apply' of undefined
(モーダル ウィンドウを閉じると、DOM から完全に削除されるjQuery.remove()
ため、今後のウィンドウは完全に新しく作成されます)。
少しいじった後、これはjQueryがMultiFile
スクリプトにアクセスできないことが原因のようです...私は思う
スクリプトは親ドキュメントのMultiFile
head に読み込まれるため、いつでも利用できるはずです。