2017-11-07 5 views
1

JavaScriptのイベントカレンダーを使用しています。カスタマイズ可能なオープンソース。 https://fullcalendar.io/Fullcalender 1日に2つのイベント

フルカレンダーで1日あたり最大2つのイベントを設定できますか?

イベントを1つだけ設定することは可能です。

ありがとうございました!

+0

http://stackoverflow.com/help/on-topic&http://stackoverflow.com/help/how-to-ask – Twinfriends

+0

ます。https://

あなたはここで働い例を見ることができますfullcalendar.io/ホームページのデモでは、11月7日に7つのイベントがあります。 – shawon191

+0

はい。知っている!しかし、私は1日に2イベントの制限を設定したい。 –

答えて

0

eventReceiveコールバックは、外部イベントがカレンダーにドロップされてレンダリングされたときに実行されます。このイベントが発生した場合、外部イベントがドロップされた日にすでに存在しているイベントの数を確認し、カレンダーから削除するかどうかを決定するために、 "clientEvents"メソッドを使用できます。

eventReceive: function(event) { 
    var newEventDay = event.start.startOf('day'); 
    var existingEvents = $("#calendar").fullCalendar("clientEvents", function(evt) { 
    //this callback will run once for each existing event on the current calendar view 
    //if the event has the same start date as the new event, include it in the returned list (to be counted) 
    if (evt.start.startOf('day').isSame(newEventDay)) { 
     return true; 
    } else { 
     return false; 
    } 
    }); 

    //if this new event means there are now more than 2 events on that day, remove this new event again (N.B. we must do it like this because by this point the event has already been rendered on the calendar) 
    if (existingEvents.length > 2) $("#calendar").fullCalendar("removeEvents", function(evt) { 
    if (evt == event) return true; 
    }); 
} 

N.B.これは、ドラッグしているイベントが1日以上にわたることがないことを前提としています。可能であれば、このコードを少し変更して、終了日を同様の式に入れる必要があります。 http://jsfiddle.net/Lfm1odm1/2/

+0

こんにちは@ADyson、その答えに感謝します。それは動作しますが、少し間違いがあります。 1日に2つ以上のイベントをドラッグすると、すべてのイベントが見えなくなります。 –

+0

@AlexanderMengerあなたが正しいです、それは問題です。思っていましたが、これを唯一の方法は、eventReceiveコールバックを使用して別のアプローチを使用することです。 eventRender内では、ちょうどドロップされたイベントと、問題を引き起こしていた他の既存のイベントとを区別する方法がありません。私は新しいアプローチへの答えを更新し、コンセプトを実証するための実例も提供しました。 – ADyson

+0

@AlexanderMengerはこの変更されたバージョンの仕事をあなたのためにしましたか?もしそうなら、答えを受け入れることを忘れないでください - ありがとう。 – ADyson

関連する問題