Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在fullcalendar.js中更新开始时间(!)_Javascript_Jquery_Fullcalendar - Fatal编程技术网

Javascript 如何在fullcalendar.js中更新开始时间(!)

Javascript 如何在fullcalendar.js中更新开始时间(!),javascript,jquery,fullcalendar,Javascript,Jquery,Fullcalendar,有没有办法改变活动的开始时间,我把它拖入日历 事件来自如下外部源: //initialize the external events $('#external-events .fc-event').each(function() { /* // store data so the calendar knows to render an event upon drop $(this).data('event', { title:

有没有办法改变活动的开始时间,我把它拖入日历

事件来自如下外部源:

//initialize the external events

    $('#external-events .fc-event').each(function() {

        /* // store data so the calendar knows to render an event upon drop
        $(this).data('event', {
            title: $.trim($(this).text()), // use the element's text as the event title
            stick: true // maintain when user navigates (see docs on the renderEvent method)
        });
        */
        var eventObject = {
            title: $.trim($(this).text()), // use the element's text as the event title
            id: $(this).data('id')
        };          

        // store the Event Object in the DOM element so we can get to it later
        $(this).data('eventObject', eventObject);

        // make the event draggable using jQuery UI
        $(this).draggable({
            zIndex: 999,
            revert: true,      // will cause the event to go back to its
            revertDuration: 0  //  original position after the drag
        });

    });
我想在模式对话框中更改/更新事件的开始时间和标题(如有必要)。它似乎工作得很好,但每次我通过拖动添加另一个事件并想要更改它时,它也会更改所有其他拖动的事件

eventClick: function(calEvent, jsEvent, view) {


           //Sending data to modal:         

            $('#modal').modal('show');
            $("#input_title").val(calEvent.title);
            var my_time = moment(calEvent.start).format('LT');
            $("#input_time").val(my_time);
            var my_date = moment(calEvent.start).format("YYYY-MM-DD");
            $("#input_date").val(my_date);

            // waiting for button 'save' click:
            $('.btn-primary').on('click', function (myEvent) {

                    calEvent.title = $("#input_title").val();
                    var my_input_time = $("#input_time").val();
                    var momentTimeObj = moment(my_input_time, 'HH:mm:ss');
                    var momentTimeString = momentTimeObj.format('HH:mm:ss');

                    var my_input_date = $("#input_date").val();
                    var momentDateObj = moment(my_input_date, 'YYYY-MM-DD');
                    var momentDateString = momentDateObj.format('YYYY-MM-DD');

                    calEvent.start = moment(momentDateString + ' ' + momentTimeString, "YYYY-MM-DD HH:mm");


                    $('#calendar').fullCalendar('updateEvent', calEvent);
                    $('#calendar').fullCalendar('unselect');
                    $('#modal').modal('hide');
              });       

            }

我做错了什么?

我终于明白了,该怎么做。在我的示例中,我可以通过计算开始和结束之间的持续时间来更改事件结束时间,并将其显示为HH:mm。因此,用户可以更改持续时间,如01:00(小时)。此外,我还添加了一些附加字段,如“信息”和“颜色”。模式(引导)中的更改完成后,我将其写回日历。也许有更好的解决办法,但对我来说效果很好

  // initialize the external events

            $('#external-events .fc-event').each(function() {

                    // Start Time: String to Date
                    var my_start_time =  new Date (new Date().toDateString() + ' ' + $(this).data('start'));
                    var start_time = moment(my_start_time).toDate();

                    // End Time: String to Date -> Date to Decimal
                    var my_dur_time = new Date (new Date().toDateString() + ' ' + $(this).data('duration'));
                    var dur_time = moment(my_dur_time).format('HH:mm');
                    dur_time = moment.duration(dur_time).asHours();


                    //Add Decimal End Time to Start Time
                    var end_time = moment(start_time).add(dur_time, 'hours');


                // store data so the calendar knows to render an event upon drop
                $(this).data('event', {
                    start: $(this).data('start'),
                    end: end_time,
                    title: $.trim($(this).text()), // use the element's text as the event title
                    stick: true, // maintain when user navigates (see docs on the renderEvent method)

                });

                // make the event draggable using jQuery UI
                $(this).draggable({
                    zIndex: 999,
                    revert: true,      // will cause the event to go back to its
                    revertDuration: 0  //  original position after the drag
                });

            });

$('#calendar').fullCalendar({

//Other calendar settings here ...

eventClick: function(event, element) {



curr_event = event;
            var inp_start_time = moment(event.start).format();
            var inp_end_time = moment(event.end).format();
            var diff_time = moment(moment(inp_end_time),'mm').diff(moment(inp_start_time),'mm');
            diff_time = moment.duration(diff_time, "milliseconds");

            diff_time = moment.utc(moment.duration(diff_time).asMilliseconds()).format("HH:mm");


            var my_time = moment(event.start).format('HH:mm');
            var my_date = moment(event.start).format('DD.MM.YYYY');
            var my_hidden_date = moment(event.start).format('YYYY-MM-DD');
            $("#inp_time").val(my_time); 
            $("#inp_date").val(my_date);
            $("#inp_hidden_date").val(my_hidden_date);
            $("#inp_title").val(event.title);

            $("#inp_duration").val(diff_time);

            $("#inp_information").val(event.information);
            $("#inp_color").val(event.color);       

            $('#modal').modal('show');
        }
});

        $("#button_ok").click(function (myevent) {

                var my_input_time = $("#inp_time").val();
                var momentTimeObj = moment(my_input_time, 'HH:mm:ss');
                var momentTimeString = momentTimeObj.format('HH:mm:ss');


                var my_input_date = $("#inp_hidden_date").val();
                var momentDateObj = moment(my_input_date, 'YYYY-MM-DD');
                var momentDateString = momentDateObj.format('YYYY-MM-DD');

                var datetime = moment(momentDateString + ' ' + momentTimeString, "YYYY-MM-DD HH:mm");

                var my_title = $("#inp_title").val();
                var my_duration = $("#inp_duration").val();

                var new_dur_time = moment.duration(my_duration).asHours();

                //Add Decimal End Time to Start Time
                var new_end_time = moment(datetime).add(new_dur_time, 'hours');

                var new_information = $("#inp_information").val();
                var new_color = $("#inp_color").val();                  

                    $.extend(curr_event, {
                        title: my_title,
                        start: datetime,
                        end: new_end_time,
                        information: new_information,
                        color: new_color
                    });

                $("#calendar").fullCalendar('updateEvent', curr_event);

        }); 

});
希望这有帮助


问候。

当您更新开始或结束时间,然后单击它再次更新时,开始时间的值是多少?当它第一次从页面加载中呈现事件时,它是这样的:“2017-10-30 12:30”,但是,在我进行更新后,它会更改为如下所示的数组:[2017,9,30,0,30,0,0]。你也会这样吗?编辑:编辑:我在ajax成功调用中使用refetchEvents解决了这个问题。