javascript - 拖放时如何为FullCalendar中的元素设置id?

标签 javascript calendar fullcalendar

我有一个拖放列表,但我不确定当用户将事件拖放到区域中时如何设置全日历事件的 ID...

我计划使用 jQuery 将 ajax 请求发送到我的后端并检索事件的 ID,但我不确定如何将其更新到我的全日历对象中。这是我的示例代码:

var calendarEl = document.getElementById('calendar');
var calendar = new FullCalendar.Calendar(calendarEl, {
    locale:'zh-cn',
    events:[
        {
          id: 'a',
          title: 'testing',
          start: '2021-03-27'
        }
    ],
  headerToolbar: {
    left: 'prev,next today',
    center: 'title',
    right: 'dayGridMonth,timeGridWeek,timeGridDay,listWeek'
  },
  customButtons: {
    add_event: {
        text: 'Add',
        click: function() {
           alert();
        }
    }
},
  {#eventLimit: true,#}
  editable: true,
  droppable: true, // this allows things to be dropped onto the calendar
  drop: function(arg) {
    // is the "remove after drop" checkbox checked?
    if (document.getElementById('drop-remove').checked) {
      // if so, remove the element from the "Draggable Events" list
      arg.draggedEl.parentNode.removeChild(arg.draggedEl);
    }
  },
    eventReceive: function( info ) {
      //get the bits of data we want to send into a simple object
      var eventData = {
        id:info.event.id,
        title: info.event.title,
        start: info.event.start,
        end: info.event.end,
        description: info.event.description,
      };
      //send the data via an AJAX POST request, and log any response which comes from the server
      $.ajax({
          url: '/home/update_event/',
          method: 'POST',
        data: eventData,
          success: (e)=>{
              console.log(e)
          }
      })
        fetch('/home/update_events/', {
        method: 'POST',
        {#headers: {'Accept': 'application/json'},#}
        body: eventData,
      }
      )
      .then(response => console.log(response))
      .catch(error => console.log(error));
    },
    datesRender: function(info){
        console.log(info)
    },
  eventClick: function(calEvent) {
      console.log(calEvent)
      var title = prompt('name:', calEvent.event.title, { buttons: { Ok: true, Cancel: false} });
      if (title === 'x' || title === 'X'){
          var event = calendar.getEventById(calEvent.event.id);
          event.remove()
      }
      else{
          if (title){
          calEvent.event.title = title;

          var event2 = calendar.getEventById('a');
          event2.setProp('title', title);
      }
      }

}
});
calendar.render();
storeCalendar = calendar
$('#save').click(()=>{
    console.log(calendar.getEvents())
})

});

最佳答案

eventReceive: function (event) {
    var title = event.event.title;
    var start = event.event.startStr;
    var backgroundColor = event.event.backgroundColor;
    var end = null;

    event.event.remove();

    calendar.addEvent({
      id:345(here you can put any id, including text),
      title: title,
      start: start,
      allDay: true,
      backgroundColor: backgroundColor,
      end: end
    });
  },

关于javascript - 拖放时如何为FullCalendar中的元素设置id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66827925/

相关文章:

javascript - 从 LiveScript 模块导出函数的最佳方式是什么?

javascript - Promise - 在两个 Promise 之间调用一个函数

javascript - 在客户端以 html 的形式在 javascript 中显示 Git diff

javascript - 如何将自定义标题添加到完整日历源

javascript - 正则表达式生成类似货币的格式

java - 日历 getTime() 只返回 EST

java - 使用 JPA 属性日历的日期格式问题

android - 检查日历事件是否正在进行

javascript - OnClick 事件,将文本添加到 div,将其删除(如果存在),并按描述名称进行分组

javascript - 通过将事件拖到完整日历 V 2 之外来删除事件(带或不带垃圾桶图标...)