使用Fullcalendar在mysql上插入具有除当前日期之外的其他日期的事件

时间:2015-03-19 16:56:24

标签: javascript jquery ajax fullcalendar

我实现了Fullcalendar,它显示了mysql表中的事件(title + datetime),并通过点击日历中的一天来插入新事件。

问题是它只在当天插入事件,即使用户点击了将来的某个日期或月份。我希望用户能够以与现在相同的方式插入未来事件。

Fullcalendar脚本,显示事件(events.php)并通过点击发送此信息的日期(标题)插入" add_event.php"

$(document).ready(function() {

    var calendar = $('#calendar').fullCalendar({
        editable: true,
        events: "http://localhost/test-fullcalendar/php/eventos.php",
        lang: "es",
        selectable: true,
        selectHelper: true,

        select: function(start, end, allDay) {
            var title = prompt('Evento a insertar:');
            if (title) {

                start = moment(event.start).format('YYYY-MM-DD HH:mm:ss');
                end = moment(event.end).format('YYYY-MM-DD HH:mm:ss');

                 $.ajax({
                     url: 'php/add_evento.php',
                     type: 'POST',
                     data: {title: title, start: start, end: end},
                     success: function(json) {
                        alert("Evento insertado");
                        console.log("Enviando: ", title, start, end);
                     }
                 });
                 calendar.fullCalendar('renderEvent',
                 {
                     title: title,
                     start: start,
                     end: end,
                     allDay: allDay
                 },
                 true
                 );
            }
            calendar.fullCalendar('unselect');
        }

    });

});

2 个答案:

答案 0 :(得分:2)

您遇到的问题是您使用不存在的日期(event.start)覆盖所选日期,因此默认为现在。当您将事件添加到日历时,它将使用覆盖的值而不是传递给select回调的值。

在:

            start = moment(event.start).format('YYYY-MM-DD HH:mm:ss');
            end = moment(event.end).format('YYYY-MM-DD HH:mm:ss');

             $.ajax({
                 url: 'php/add_evento.php',
                 type: 'POST',
                 data: {title: title, start: start, end: end},
                 success: function(json) {
                    alert("Evento insertado");
                    console.log("Enviando: ", title, start, end);
                 }
             });

后:

            start_ajax = moment(start).format('YYYY-MM-DD HH:mm:ss');
            end_ajax = moment(end).format('YYYY-MM-DD HH:mm:ss');

             $.ajax({
                 url: 'php/add_evento.php',
                 type: 'POST',
                 data: {title: title, start: start_ajax, end: end_ajax},
                 success: function(json) {
                    alert("Evento insertado");
                    console.log("Enviando: ", title, start_ajax, end_ajax);
                 }
             });

答案 1 :(得分:0)

您可以使用

获取当前所选日期
$("#calendar").fullCalendar('getDate');

它会返回一个moment.js日期对象