eventAdd 는 사용자가 새로운 일정을 추가할 때 발생하는 콜백함수를 정의합니다.

해당 파라미터에서는 추가되는 일정의 내용과 속성들을 담고 있습니다.
만약 특정 조건에서 신규 일정이 등록되지 않게 하려면 아래와 같이 추가되는 일정을 삭제해주면 됩니다.
(단, 일정 등록 창에서 [저장]버튼을 눌렀을 경우에 해당하며, 일정등록창 자체를 제한하는 것은 selectConstraint 를 참고해주세요)
"eventSources" : [
{
"id": "eventSource1",
eventAdd: function (eventAddInfo) {
if (...특정 조건일 때...) {
eventAddInfo.events[0].remove(); // 일정을 등록하지 않고 삭제
}
}
}
]예시 1) 일정 등록 시 하루간격으로만 등록 가능한 예제
일정 등록 시 이틀 이상 간격이면 오류메시지를["하루간격으로만 설정 가능합니다"]라고 출력하고 일정을 등록하지 않는 예제입니다.
예제) https://jsfiddle.net/79qg1az3/
"eventSources" : [
{
id: "eventSource1",
eventAdd: function (eventAddInfo) {
var startDate = new Date(eventAddInfo.eventInputs[0].start);
var endDate = new Date(eventAddInfo.eventInputs[0].end);
var evtId = eventAddInfo.eventInputs[0].id;
//당일 86400000(24시간)
//이틀 172800000(48시간)
//삼일 259200000 (36시간)
if (endDate - startDate > 172800000) {
alert("일정은 하루간격으로만 설정 가능합니다.");
eventAddInfo.events[0].remove(); // 일정 삭제
}
}
}
]예시 2) 공휴일에 신규 일정 등록 시 등록되지 않게 하는 예제
공휴일은 별도로 설정해야하기 때문에 selectConstraint 와 같이 일정 등록창을 제한할 수 없습니다.
다만, 일정을 등록하는 eventAdd 이벤트에서 이벤트 저장버튼 클릭 시 이를 저장하지 않는 동작을 추가할 수 있습니다.
아래 예제는 공휴일일 경우 alert를 띄우고 저장이 되지 않게 하는 예제입니다.
예제) https://jsfiddle.net/58rm3n4d/
"eventSources": [
{
"id": "eventSource1",
//일정 추가 이벤트에서 공휴일에 일정등록 시 alert를 띄우고 일정등록이 되지 않음.
eventAdd: function(eventAddInfo) {
const clickDay = new Date(eventAddInfo.eventInputs[0].start);
const formatting = new Intl.DateTimeFormat('en-CA').format(clickDay); // 날짜형식(yyyy-MM-dd)
const isHoliday = holidays.some(holiday =>
formatting === holiday);
if(isHoliday){
alert("오늘은 공휴일입니다.");
eventAddInfo.events[0].remove(); // 일정 삭제
}
}
},
]