web-dev-qa-db-ja.com

このイベントをFullCalendarから削除するにはどうすればよいですか?

カレンダーを使用すると、ユーザーはタイムスロットをカレンダーにドラッグできますが、ユーザーがカレンダーをクリックして削除できるようにしたいと考えています。

したがって、eventClickには次の関数があります。

function (calEvent) {
  removeRequestedEvent($(this), calEvent);
},

カレンダーイベントとカレンダー自体に渡されます。

removeRequestedBooking: function (cal, calEvent) {
    if (!confirm("Delete?"))
        return;

    cal.fullCalendar("removeEvents", calEvent.id);
    cal.fullCalendar("rerenderEvents");

    // Re-show draggable element
    $("#requests #" + calEvent.id).show();
}

また、フィルターを使用してみましたが、returnステートメントのブレークポイントにヒットすることはありません。

    cal.fullCalendar("removeEvents", function (event) {
        return event.id == calEvent.Id;
    });

何か案は? (私はIdが正しいことを知っています、そして最後の行は機能します)。 FirebugはJavaScriptでエラーを表示しません。

FullCalendar v1.4.10を使用しています

17
Brandon

渡されたcalを使用する代わりに、カレンダーを保持するdivの呼び出しを使用してみることはできますか?

eventClick の場合、thisは、ドキュメントで読んでいる内容に従って、イベントのHTMLを参照します。

4
justkt

すべてのIDを配置したら、Tuanのソリューションを使用します。

ただし、イベントにIDがない場合は、次のようにします(IDが設定されている場合も同様です)。

eventClick: function(event){
   $('#myCalendar').fullCalendar('removeEvents',event._id);
}

なぜこの問題が発生するのですか?その一般的な理由は、新しいイベントを追加するときに、fullcalendarがIDを自動的に追加しないことです。もしそうなら、あなたが渡したIDは未定義です。 Fullcalendarは、IDまたはフィルターを使用して削除しようとしている場合、どちらの場合もIDを使用します。したがって、値が未定義の場合は常にfalseを返します。削除する要素の意味リストは常に空です。

28
elon

さらにシンプル:

eventClick: function(calEvent, jsEvent, view) {
    $('#calendar').fullCalendar('removeEvents', function (event) {
        return event == calEvent;
    });
}
8
seddonym

RefetchEventsを使用します。

cal.fullCalendar("refetchEvents");
4
Julio

Justktの答えには少し時間がかかりましたが、コードを非常に簡単な方法で見る必要がある他のすべての初心者のために結果を投稿します。

eventClick: function(event){
  var event_id = event.id;
  $.post('/Dropbox/finance/index.php/welcome/update', {"event_id": event_id},
      function(data){
          $('#calendar').fullCalendar("removeEvents",  (data));
          $('#calendar').fullCalendar("rerenderEvents");                
        }
      });   
}

PHP(codeignighterを使用):

public function update(){
  $result = $this->input->post('event_id');
  echo $result;
  // would send result to the model for removal from DB, or whatever
}
3
Dane Calderon

Event.startでフィルター機能を使用し、うまく機能します

calendar.fullCalendar('removeEvents', function(event) {
  return 
    $.fullCalendar.formatDate(event.start, 'yyyyMMdd') 
    == $.fullCalendar.formatDate(start, 'yyyyMMdd');
});
2
Tuan