0

今日の何時間も無駄にしてしまった本当に混乱した時間を過ごしています!

私はこれを以前に投稿しました: jquery-multifile を動的にロードされたフォームにバインドする

これは、私の問題のパート 1 を説明しています。

私は今、同じ問題を抱えていますjquery.forms

だから、私がやっていることを拡張するには:

フォームを DIV にロードしていますjquery.load。DIV はボディの先頭に追加され、すべて jQuery を使用してモーダル ウィンドウとして表示されます。要素が DOM に追加されたら、次のように呼び出します。

$('#imgSelect').MultiFile();

および $('.reportIt').ajaxForm(options);

これらの 2 行は、関連する要素であるリンクに$.MultiFile()and $.ajaxForm(jquery.forms) を追加します。

http://malsup.com/jquery/form/

http://www.fyneworks.com/jquery/multiple-file-upload/

これは完全にうまく機能し、すべてが期待どおりに機能します...例外...

ユーザーがモーダル ウィンドウの [閉じる] ボタンを押し、新しいページの読み込みを実行せずにウィンドウを再度開くと、ウィンドウが壊れます。

ユーザーがモーダル ウィンドウを閉じると、次のようになります。

function closeModal(ele) {
    if ($(ele).hasClass('noClose')) {
        alert("Please wait... we're working on something.");
    } else {
        $(ele).fadeOut(function () { 
            $(this).remove();
        });
    };
};

したがって、モーダル要素を非常に単純にフェードアウトさdivせ、DOM から完全に削除します。

これによると:http://www.w3schools.com/jquery/html_remove.asp

この$().remove()メソッドは、親コンテナー内のすべての要素を DOM から完全に削除し、かつ

このメソッドは、選択した要素のデータとイベントも削除します。

したがって、私が理解しているように、これは、jQuery とそれぞれのプラグインに関する限り、モーダル ウィンドウが作成されて DOM に書き込まれるたびに、完全に新しい要素のセットであることを意味する必要があることを意味する必要があり.MultiFile()ます。以前に表示されたかどうかに関係なく、まったく同じです.ajaxForm()

2回目は機能しないことを除いて!(複数ファイルの入力は単一の入力として動作し、送信されたフォームはインラインで動作し、必要に応じて AJAX 送信としてではありません)

私が得ている唯一のエラーは、以前の投稿で述べたものです。

もう少し調査すると、このエラーはjquery.MultiFileプラグイン スクリプトの次の行で発生することがわかります。

$.fn[method] = function () {
    $.fn.MultiFile.disableEmpty();
         value = $.fn.MultiFile.intercepted[method].apply(this, arguments);              
          setTimeout(function () { $.fn.MultiFile.reEnableEmpty() }, 1000);
          return value;
}; // interception

これは、このプラグインに精通している人にとっては 453 行目あたりです。

プラグインが何をするかを見て、追加されたクラスを持つ要素に関係していると思いましたがMultiFile-intercepted、Chrome コンソールを介して DOM 操作を見ていると、これらの関数が実行された 1 回目と 2 回目の動作の違いがわかりません。問題が何であるかを解決しません。

これらの関数が 2 回目の試行で機能しない理由について、誰かアドバイスを提供できますか?

  • の使用に何か欠けていますかjquery.remove()
  • remove()私が使用しているプラ​​グインのいずれか/両方に、見落としている 機能がありますか(ドキュメントを読みました)

編集:進行中の作業であるため、ここに実際の例があります:

http://www.guitartrak.com/

カテゴリ > エレキギター、ブランド > Gibson を使用して「アイテムの登録」フォームに入力し、他のものに必要なものを入力してから、「続行」を押して、画像選択に複数のファイルを追加してみてください。これが最初に機能するはずです。時間。ここで、[保存して投稿] を押すのではなく、大きな [X] を押してから、ページを更新せずにプロセス全体をもう一度試してください。もう一度画像を追加しようとすると、問題が発生します。

4

0 に答える 0