javascript - 在 FullCalendar.js 中添加 28 天周期的事件

标签 javascript jquery fullcalendar

我正在使用 FullCalendar.js 来显示用户输入的任务。为此,我创建了一个弹出窗口来获取事件的基本详细信息和有关重复的详细信息。事件可以每天、每周、28 天、31 天、30 天的周期重复发生。我已经能够渲染每日和每周的事件,但我无法考虑如何渲染事件之间间隔 28/30/31 天的事件发生。

我的日历代码如下:

    $('#calendar').fullCalendar({
    //height: 420,
    header: {
        left: 'prev,next today',
        center: 'title',
        right: 'month,agendaWeek,agendaDay'
    },
    defaultDate: moment(),
    defaultView: 'month',
    eventRender: function (event, element, view) {
        console.log(event.start.format());
        if (event.ranges == undefined)
            return true;
        else {
            return (event.ranges.filter(function (range) {
                if (range.end == undefined)//Check if only start is given
                    return (event.end.isAfter(range.start))
                else
                    return (event.start.isBefore(range.end) &&//If both start and end date is given
                            event.end.isAfter(range.start));
            }).length) > 0;
        }
    },
    events: function (start, end, timezone, callback) {
        var events = getEvents(start, end); //This should be a JSON request
        callback(events);
    },
    eventClick: function (calEvent, jsEvent, view) {
        alert('Event: ' + calEvent.title);
        //$('#btnOpenPopUp').click();
    }
});

事件的 json 如下所示:

     {
    title: "My repeating event",
    id: 1,
    start: '10:00', // a start time (10am in this example)
    end: '14:00', // an end time (6pm in this example)
    dow: [1, 2, 3, 4, 5], // Repeat monday and thursday
    ranges: [{ 
        start: moment().startOf('month').subtract(1, 'month'), 
        end: moment().startOf('month').subtract(1, 'month').add(7, 'd'),
    }, {
        start: moment('2016-12-15', 'YYYY-MM-DD'), //all of february
        //end: moment('2016-11-01', 'YYYY-MM-DD').endOf('month'),
    } 

我需要帮助来渲染每 28 天后发生的任务。有什么建议吗?

最佳答案

也许您可以使用later.js项目( http://bunkat.github.io/later/index.html )来计算任务的发生次数。此代码示例将生成每 28 天 2 个日期之间出现的所有事件:

<html>
<head>
<script src="moment.js" type="text/javascript"></script>
<script src="moment-recur-min.js" type="text/javascript"></script>
<script type="text/javascript">

var recurrence = moment().recur("2016-12-06", "2017-12-06").every(28).days();
var allDates = recurrence.all("L");
console.log(allDates);
</script>
</head>
<body>

test
</body>
</html>

关于javascript - 在 FullCalendar.js 中添加 28 天周期的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40979465/

相关文章:

javascript - Gulp 未创建文件

javascript - 在日期选择器中显示当前日期

javascript - Jquery .parents 定位问题

jquery - 使用 emberjs didInsertElement 显示两个单独的日历或两个 jquery fullcalendar 插件对象实例

javascript - Fullcalendar 显示下个月的事件,我该如何解决这个问题?

javascript - 比较两个日期angularjs

javascript - 如何在 Ajax 调用 Controller 后显示 View

javascript - 我如何在 React 中通过子索引传递 Prop

javascript - 为什么我的代码在本地表现不同并且未加载正确的 json 响应?

javascript - 完整日历选择 : callback Javascript Error