2015-11-03 126 views
5

最近FullCalendarプラグインを使い始めました。私は、カレンダーのイベントを削除する関数を実装しようとしています。しかし、データベースに保存する前に、今日までの日付に外部イベントをチェックしたり無効にしたりしないようにしたいと思っています。FullCalendarの過去の日付を無効にする

これを行う方法についての任意のアイデア??私は過去の日のような何かを探していますので、既に存在するイベントを表示することができます。過去の日付にイベントがドロップされないようにしたい。

EDIT:

drop: function (date, jsEvent, ui) { 

    if(date<currentDate) { 
     $('#calendar').fullCalendar('removeEvents', event.id); 
    } 

私はカレンダーから削除イベントを削除して、もう一度DIVにそれを追加するために、このメソッドを使用してみました。それでも、それは取り除かれていません。

ありがとうございました。 :)

+0

...月間ビューで、今日に落下防止既に。 –

+0

申し訳ありません。どのようにその機能を実装するかについてはわかりません。私は検索を試みた。これまでのところロックはありません。 – FireDrakon

答えて

8

eventConstraintは過去日間

/* SHADE DAYS IN THE PAST */ 
td.fc-day.fc-past { 
    background-color: #EEEEEE; 
} 

そしてeventConstraint

のための灰色するために設立境界

のドラッグ&ドロップの外側を無効にすることができます

 /* This constrains it to today or later */ 
     eventConstraint: { 
      start: moment().format('YYYY-MM-DD'), 
      end: '2100-01-01' // hard coded goodness unfortunately 
     } 
01 eventConstraintの「終了」の場合

http://jsfiddle.net/1qsrjffL/

あなたがハードコーディングされ

EDIT対好きなら、あなたは現在の日付に日数を追加することができます。

することができます一日ビューで時間をグレーに使用businessHours

businessHours: { 
    start: moment().format('HH:mm'), /* Current Hour/Minute 24H format */ 
    end: '17:00', // 5pm? set to whatever 
    dow: [0,1,2,3,4,5,6] // Day of week. If you don't set it, Sat/Sun are gray too 
} 

過去でagendaDayへの外部イベントのドロップが許さトンであります発生する。時間を含めるようにeventConstraintを編集するに動作します「YYYY-MM-DD HHを:MM」が、それはいくつかのサンプルコードは素晴らしい+あなたが試したものだろう

http://jsfiddle.net/1qsrjffL/1/

+0

これは完璧です!ありがとうございました。agendaDayモードでタイムスロットのCSSクラスがどこにあるのか教えていただけますか?私は今日の過去のタイムスロットもグレーにする必要があります。 – FireDrakon

+0

businessHoursを使用すると、灰色にすることができます。また、eventConstraintのHour/Minuteを設定すると、週または日のビューで過去のドロップを防ぐことができます。しかし、副作用として、今日の月表示でイベントをドロップすることも防ぎます。更新された答えとフィドルへのリンク。カレンダーの定期的なリフレッシュが必要な場合があります。たとえば、今日の開始時に誰かがサイトを開き、ブラウザに開いたままにしておけば、昼食のあいだにイベントを9AMにドラッグできます。 – smcd

+0

ありがとうございます。しかし、私が期待していることは、たとえば営業時間が9-5に設定されているということです。現在の時間は10です。私はユーザーが10時前にドロップすることを許可したくありません。それは可能ですか? 過去のタイムスロットをマークするCSSクラスなどがある場合は、簡単になります。あなたが私が意味するものを得ることを願っています。 – FireDrakon

3

eventDropがあなたを取得する必要があります。

eventDrop: function(event, delta, revertFunc) { 
     if(event.start < currentDate) { 
      revertFunc(); 
     } 
    } 
+0

答えてくれてありがとう..イベントをドロップすると、 'drop'イベントと 'eventReceive'イベントだけがトリガーされます。したがって、事故の際に落としたイベントを元に戻す方法はありません。何かご意見は? – FireDrakon

+0

どのバージョンのfullcalendarを使用していますか? eventDrop(バージョン2で利用可能)は期待通りに動作します。 [slyvain's code snipの例] – smcd

+0

申し訳ありませんが、あなたの質問をもう一度読んで、あなたは外部イベントドロップについて議論していました。 – smcd

関連する問題