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

kai*_*dot 6 javascript jquery events fullcalendar

有人可以通过将其拖出日历来向我提供有关如何从FullCalendar版本2删除事件的建议吗?

我在这里看到了一些解决方案:从fullcalendar中删除元素(通过拖动到垃圾桶)

但它似乎解决了版本1.

小智 18

我的第一个方法是:

eventDragStop: function(event,jsEvent) {
    alert('Coordinates: ' + jsEvent.pageX + ',' + jsEvent.pageY);
    if( (300 <= jsEvent.pageX) & (jsEvent.pageX <= 500) & (130 <= jsEvent.pageY) & (jsEvent.pageY <= 170)){
      alert('delete: '+ event.id);
      $('#MyCalendar').fullCalendar('removeEvents', event.id);
    }
}
Run Code Online (Sandbox Code Playgroud)

这允许将事件拖动到与要删除的if条件顺序相对应的区域(以像素为单位).使用fullcalendar 2.1.1进行测试.

一个改进是检查和比较jsEvent坐标$(window).height()$(window).width(),这样会确认/测试拖出日历区域,当然非常简洁.

实际上,改进是(一个优雅的解决方案),基于提到的解决方案:

  1. 使用图标trash创建div元素:
<div id="calendarTrash" class="calendar-trash"><img src="path/to/static/images/trash.png" /></div>
Run Code Online (Sandbox Code Playgroud)
  1. eventDragStop是:

    eventDragStop: function(event,jsEvent) {
    
        var trashEl = jQuery('#calendarTrash');
        var ofs = trashEl.offset();
    
        var x1 = ofs.left;
        var x2 = ofs.left + trashEl.outerWidth(true);
        var y1 = ofs.top;
        var y2 = ofs.top + trashEl.outerHeight(true);
    
        if (jsEvent.pageX >= x1 && jsEvent.pageX<= x2 &&
            jsEvent.pageY >= y1 && jsEvent.pageY <= y2) {
            alert('SIII');
            $('#calendario').fullCalendar('removeEvents', event.id);
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

在Fullcalendar 2.1.1上测试

  • 效果很好.谢谢.我只需要将event.id更改为event._id (4认同)
  • 这对我有用,除了在它被删除之前它显示事件的动画回到它的原始日期.我怎么能阻止这个? (3认同)
  • @skeletank检查dragRevertDuration属性 - http://fullcalendar.io/docs/event_ui/dragRevertDuration/以防止动画. (2认同)