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(); // 일정 삭제
        }
        } 
    },
]