javascript - 只允许将事件保存到全日历中的特定月份

标签 javascript jquery fullcalendar

我还有一个问题要向 fullcalendar 询问。

我想让这些东西只将事件保存到固定月份。其他月份应该是只读的。有没有办法实现这一点?

这是我的代码:

$j('#calendar').fullCalendar({
        header: {
            left: 'prev,next today',
            center: 'title',
            right: 'month,agendaWeek,agendaDay'
        },
        defaultDate: '2017-05-12',
        selectable: true,
        selectOverlap: false,
        weekends: false,

        eventOverlap: false,

        select: function(start, end) {
            var title = prompt('Kostenstelle:');
            var eventData;
            id =   Date.now();
            if (title) {
                eventData = {
                    id: id,
                    title: title,
                    start: start,
                    end: end
                };
                $j('#calendar').fullCalendar('renderEvent', eventData, true); // stick? = true
            }
            saveDay({'id': id,'title': title, 'start': start, 'end': end});
            $j('#calendar').fullCalendar('unselect');
        },

        eventResize: function (event, dayDelta, minuteDelta) {
            saveRange(event);
        },

        eventDrop: function (event, delta, revertFunc, jsEvent, ui, view ){
            saveDrop(event, view);
        },

        eventReceive: function (event, dayDelta, minuteDelta){
            saveDay(event);
        }, 

        eventRender: function(event, element) {
            if(event.className != 'disableDelete'){ element.append( "<span class='closeon'>x</span>" );}
            element.find(".closeon").click(function() {
                 $j('#calendar').fullCalendar('removeEvents',event._id);
                 deleteDay(event);
            });
        },



        droppable: true, // this allows things to be dropped onto the calendar
        drop: function() {
            // is the "remove after drop" checkbox checked?
            if ($j('#drop-remove').is(':checked')) {
                // if so, remove the element from the "Draggable Events" list
                $j(this).remove();
            }
        },
        editable: true
 });

用户应该能够查看其他月份,但不能设置事件。所以我想将其他日子设置为只读。是否可以?

谢谢!

最佳答案

您可以按如下方式执行此操作

var monthStartDate = new Date('1/1/2017');
var monthEndDate = new Date('1/31/2017');
// monthStartDate and monthEndDate is month range in which you want to save event
select: function(start, end) {
            if(start >= monthStartDate && start <= monthEndDate && end >= monthStartDate && end <= monthEndDate) {
                var title = prompt('Kostenstelle:');
                var eventData;
                id =   Date.now();
                if (title) {
                    eventData = {
                        id: id,
                        title: title,
                        start: start,
                        end: end
                    };
                    $j('#calendar').fullCalendar('renderEvent', eventData, true); // stick? = true
                }
                saveDay({'id': id,'title': title, 'start': start, 'end': end});
                $j('#calendar').fullCalendar('unselect');
            }
 },

这将不允许保存 monthStartDatemonthEndDate 之间的事件。

关于javascript - 只允许将事件保存到全日历中的特定月份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44276514/

相关文章:

jquery - 想只在主菜单而不是子菜单上有 Jquery 效果

javascript - 我们如何为 3 个函数重用 jQuery ajax 方法?

javascript - SinonJS 假计时器不适用于 QUnit

javascript - 当时间不是全日全日历时,无法调整事件大小

javascript - 在 FullCalendar 插件上创建重复事件

javascript - 我对 for 循环中的 javascript let 和 var 感到困惑?

javascript - TypeError : $. ajax(...).done(...).fail(...).complete 不是函数

javascript - 使用 Jsoup 提取 "hidden"HTML

javascript - 如果单击时字段为空,则显示工具提示

javascript - FullCalendar - 在议程 View 中(每周或每天)仅显示 'allDay' 槽