在fullcalendar对象事件

时间:2015-10-07 06:15:02

标签: javascript jquery object fullcalendar

我正在使用http://fullcalendar.io/ 我的用户可以创建多个事件来表明他的不同意见。每当他选择一个插槽时,他就会创建一个事件:

 $('#calendar').fullCalendar({
    defaultView:  'agendaWeek',
    lang:         "fr",
    header:       false,
    timezone:     'local',
    minTime:      "08:00:00",
    columnFormat: 'dddd',
    selectHelper: true,
    selectable:   true,
    select: function(start, end, id, allDay) {
      var eventData = {
        start: start,
        end: end,
        block:  true,
        editable: true,
        id: id,
        backgroundColor: "#469278"
      };

      // console.log(moment(eventData.start["_d"]).format("dddd"));
      // console.log(moment(eventData.end["_d"]).format("dddd"));


      $('#calendar').fullCalendar('renderEvent', eventData, true); // stick? = true

      // console.log(eventData);
      // if (moment(eventData.start["_d"]).format("dddd") != moment(eventData.end["_d"]).format("dddd")) {
      //   $('#calendar').fullCalendar('unselect');
      // };
      var day         = moment(eventData.start["_d"]).format("dddd");
      var start_time  = moment(eventData.start["_d"]).format("HH:mm");
      var end_time    = moment(eventData.end["_d"]).format("HH:mm");
      var id          = moment(eventData.end["_id"]);

      var slot        = {
        day: day,
        start_time: start_time,
        end_time: end_time
      };
      array_dispo.push(slot);

      $("#dispo_array").val(JSON.stringify(array_dispo));
      $('#calendar').fullCalendar('unselect');
    },
    editable:     true,
    eventLimit:   true,
    eventClick: function(event, element) {
      if(confirm('Voulez-vous supprimer cette dispo?')) {
        $('#calendar').fullCalendar('removeEvents',event._id);
      }
    },

    selectOverlap: function(event) {
      return ! event.block;
    }
  });
});
          // console.log(moment(eventData.start["_d"]).format("dddd"));
          // console.log(moment(eventData.end["_d"]).format("dddd"));


          $('#calendar').fullCalendar('renderEvent', eventData, true); // stick? = true

          // console.log(eventData);
          // if (moment(eventData.start["_d"]).format("dddd") != moment(eventData.end["_d"]).format("dddd")) {
          //   $('#calendar').fullCalendar('unselect');
          // };
          var day         = moment(eventData.start["_d"]).format("dddd");
          var start_time  = moment(eventData.start["_d"]).format("HH:mm");
          var end_time    = moment(eventData.end["_d"]).format("HH:mm");
          var id          = moment(eventData.end["_id"]);

          var slot        = {
            day: day,
            start_time: start_time,
            end_time: end_time
            id: id

          };
          array_dispo.push(slot);

          $("#dispo_array").val(JSON.stringify(array_dispo));
          $('#calendar').fullCalendar('unselect');
        },

每次用户选择时间段时,它都会创建一个事件对象http://fullcalendar.io/docs/event_data/Event_Object/,其中指定的eventData在隐藏字段中作为JSON发送。问题是我没有设法获取此事件对象的id,我想这是由fullcalendar发送的。 我console.log(eventData);时得到的对象是:

Object {start: Moment, end: Moment, id: jQuery.Event, block: true, editable: true…}

但是这个jQuery.event没有唯一的ID,它看起来像这样:

id: jQuery.Event
altKey: false
bubbles: true
button: 0
buttons: 0
cancelable: true
clientX: 336
clientY: 290
ctrlKey: false

如果我想稍后删除或修改事件对象,我需要此ID。 我怎样才能获得此活动ID?

1 个答案:

答案 0 :(得分:0)

您在eventData对象中指定了自己的ID,在您给出的示例中指定了 1 。确保具有这些唯一性,然后您可以将此ID传递给.fullCalendar( 'removeEvents' [, idOrFilter ] ),例如。

在以下位置找到创建唯一身份证的示例:Create GUID / UUID in JavaScript?