1

ここにある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 ファイルは、上記のようにdivjquery を使用してロードされています。関数は、次のように、動的に生成された HTML へのさまざまなバインディング メソッドを呼び出すことです。loaddoReportForm

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スクリプトにアクセスできないことが原因のようです...私は思う

スクリプトは親ドキュメントのMultiFilehead に読み込まれるため、いつでも利用できるはずです。

4

0 に答える 0