2017-01-09 2 views
0

Я хотел бы добавить 1 час до даты начала мероприятия и установить дату окончания. Всякий раз, когда я пытаюсь использовать функцию добавления минуты, я хотел бы получить:Как добавить 1 час в дату окончания события динамически?

Uncaught TypeError: Cannot read property '_calendar' of undefined at D (moment.min.js:28) at e (jquery.min.js:4) at xb (jquery.min.js:4) at xb (jquery.min.js:4) at xb (jquery.min.js:4) at Function.r.param (jquery.min.js:4) at Function.ajax (jquery.min.js:4) at HTMLButtonElement. ((index):385) at HTMLButtonElement.dispatch (jquery.min.js:3) at HTMLButtonElement.q.handle (jquery.min.js:3)

Ниже мой код:

function loadCalendar(batch) { 
    calendar.fullCalendar({ 
     defaultDate: moment("2016-12-11"), 
     utc: true, 
     header: false, 
     columnFormat: 'dddd', 
     allDaySlot: false, 
     hiddenDays: [0], 
     defaultView: 'agendaWeek', 
     minTime: '07:00:00', 
     maxTime: '21:00:00', 
     editable: true, 
     droppable: true, 
     lazyFetching: true, 
     eventOverlap: false, 
     events: { 
      editable: true 
     }, 
     drop: function(event, ui) { 
      classname = $(this).attr("id"); 
     }, 
     eventReceive: function(event) { 
//         classname = $(this).attr("id"); 
      console.log(classname); 
      $("#new-subj").modal("show"); 

      $("#save-subj").click(function() { 
//          var batch = $(".course").text(); 
       var subjcode = $("#subjcode").val(); 
       var start = event.start.format("YYYY-MM-DD[T]HH:mm:SS+08:00"); 
       var end = moment(start).add(1, "hour"); 
       var prof = $("#prof").val(); 
       var profname = $("#prof option:selected").text(); 
       var room = $("#room").val(); 
       var roomname = $("#room option:selected").text(); 
       var course = $("#course-hidden").val(); 
       var yrlvl = $("#yrlvl-hidden").val(); 
//          var classname = $(this).css("background-color"); 

       $.ajax({ 
        url: eventurl, 
        type: "POST", 
        data: { 
         batch: batch, 
         subjcode: subjcode, 
         prof: prof, 
         start: start, 
         end: end, 
         room: room, 
         course: course, 
         yrlvl: yrlvl, 
         classname: classname, 
         action: "add" 
        }, 
        dataType: "json", 
        success: function(data) { 
         event.id = data.eventid; 
         console.log(data.eventid); 
         event.title = subjcode; 
         event.description = profname + "<br/>" + roomname; 
         event.className = classname; 
         calendar.fullCalendar('updateEvent', event); 

         $("select").prop("selectedIndex", 0); 
        }, 
        error: function(e){ 
         console.log("adding event: "+e.responseText); 
        } 
       }); 
       calendar.fullCalendar('updateEvent', event); 
       $("#new-subj").modal("hide"); 
      }); 

      $("#cancel-subj").click(function() { 
       calendar.fullCalendar('removeEvents', event.id); 
       getEvents(); 
      }); 
     }, 
     eventDragStop: function (event, jsEvent, ui, view) { 
      if (isElemOverDiv(jsEvent)) { 
       swal({ 
        title: "Are you sure you want to delete this subject?", 
        type: "warning", 
        showCancelButton: true, 
        confirmButtonColor: "", 
        confirmButtonText: "Delete", 
        closeOnConfirm: false 
       }, 
       function(isConfirm) { 
        if (isConfirm) { 
         $.ajax({ 
          url: eventurl, 
          type: "POST", 
          data: { 
           id: event.id, 
           action: "delete" 
          }, 
          dataType: "json", 
          success: function(data) { 
           console.log(data); 
           if (data.status == "success") { 
            console.log(event.id); 
            setTimeout(function(){ 
             calendar.fullCalendar('removeEvents', event.id); 
             getEvents(); 
             swal("Deleted", "The subject has been deleted.", "success"); 
            }, 2000); 
           } 
          }, 
          error: function(e){ 
           console.log('Error processing your request: '+e.responseText); 
          } 
         }); 
        } 
       }); 
      } 
     } 
    }); 
} 
+0

Проблема должна быть с "event.start". Проверьте в отладчике значение «event.start», а затем значение переменной «start». Проще всего проверить это прямо в консоли отладчика. – Karl

+0

Я пробовал, но у меня все еще есть ошибка. Но когда я изменяю «var end = moment (start) .add (1,« hour »),' to 'var end = event.start;', ошибка исчезает. – devgirl

+0

проверьте также, доступен ли момент и какой. Это также момент, который поставляется с fullcalendar. Если вы предоставите скрипку, я смогу сделать больше исследований. Я сделал скрипку на данный момент, и она отлично работает – Karl

ответ

0

Я решил свою проблему, используя moment(event.start).add(1, "h").format("YYYY-MM-DDTHH:mm:ss");. Moment считывает дату как недопустимый формат ISO, поэтому я думаю, что мне нужно было отформатировать его.

1

Это должно сделать трюк. Для события, установить начальную и конечную даты объекта события следующим образом:

event.end = event.start.add(moment.duration("01:00:00")); 

Если event.start не является объектом момент, вы, возможно, придется сделать event.end = moment(event.start) ..., чтобы добавить работу.

+0

Это был не совсем ответ, но это помогло. Я решил свою проблему, используя формат «момента (event.start) .add (1,« h »). (« YYYY-MM-DDTHH: mm: ss »);'. Moment считывает дату как недопустимый формат ISO, поэтому я думаю, что мне нужно было отформатировать его. Спасибо, тем не менее! – devgirl

Смежные вопросы