0

単純なモーダル ポップアップ フォームからイベントを追加する日をクリックするカレンダーがあります。Eric Martin の jquery プラグインを使用していますが、ajax 応答を停止せずにフォームを閉じることができないようです。

これが私のコードです:

function simple_dialog_link(request, title) {
  $.get(request, function(data) { 
    $.modal("<div class='modal'><div class='bar' >"+title+"</div><div class='inside'>"+data+"</div></div>");

    $(".modal").draggable({ handle: ".bar" }); 

    $("input.save").live("click", function(){
           $.modal.close();
    }); 
  });
};

これにより、フォームが完全に読み込まれ、ウィンドウが閉じられますが、コントローラーの下の html パスにリダイレクトされます。

def update
  @log_entry = LogEntry.find(params[:id])
  @athlete = User.find_by_id(@log_entry.athlete_id)
  @log_entry.update_attributes(params[:log_entry])
  @date = @log_entry.date.to_s
  @cal_class = LogEntry.get_class_name(@date)
  @entries = LogEntry.cal_entry(@date, @athlete.id)
  respond_to do |format|
    format.html { redirect_to coaches_path }
    format.js
  end
end

私がこれまでに試したことはreturn: false、モーダルクローズ機能の下に追加することです。これはモーダルウィンドウを閉じますが、カレンダーまたはデータベースの更新に失敗するため、コントローラーに送信する前にフォームを切断します。ajax関数を中断せずにウィンドウを閉じる関数が必要です。奇妙なのは、フォームが正常に送信され、$.modal.close();機能を削除するとカレンダーが更新され、モーダルウィンドウを開いたままにすることです。この機能が必要ですが、ウィンドウを閉じます。

4

1 に答える 1

0

さて、私はそれを理解しました。私がこれらすべてについてどれだけ知っているかを示しています! 私がしなければならなかったのは、 ajax:complete コールバック内に close 関数を入れることだけでした。

$(".edit_log_entry").bind('ajax:complete', function() {$.modal.close();});
于 2012-11-13T01:07:04.330 に答える