【问题标题】:jquery fullcalendar drop non event on eventjquery fullcalendar 在事件上删除非事件
【发布时间】:2016-01-22 20:26:55
【问题描述】:

我无法将一个项目(它不是一个事件,它是一个员工姓名)拖放到一个事件上。

我想在一个事件中拖动一个员工(见图),但“员工”是 没有事件。我正在使用 jquery UI 可拖放/可拖放。

<script>
var calendar;
$(document).ready(function() {
    calendar = $('#calendar').fullCalendar({
    droppable: true,
    dropAccept: '.employeeItem',    
    drop: function(date, allDay, jsEvent, ui) {

}
});
});   

$(function() {
$(".employeeItem").draggable();
$(".fc-event").droppable({ 
    drop: function(event, ui) { 

    }
});
});
</script>

<?php for($i=1;$i<=30;$i++){?>
   <div>Simpson, Homer<br>
      10 / 14 h
   </div>
<?php }?>

<div id='calendar'></div>

在让员工参加某个活动后,我需要相应的 事件数据(事件 ID 等)将进程保存到数据库。但是 jquery fullcalendars "drop (callback)" 只提供了该项目被丢弃的日期。

【问题讨论】:

    标签: javascript jquery jquery-ui fullcalendar


    【解决方案1】:

    您可以使用 eventAfterRender 通过数据属性将自定义 id 添加到 dom 元素。然后抓取drop后的id(event.target),更新db中的事件,然后刷新dataSource。

    Fiddle

    $(document).ready(function() {  
    
        $('#calendar').fullCalendar({
            ...
            eventAfterRender: function(event, element){
                element.data('myId',event.myId);
                $(element).droppable({
                    drop: function( event, ui ) {
                        var dragged = ui.draggable;
                        var targetId = $(event.target).data('myId');
                    }
                });
            }
            ...
        });
    });
    
    $(document).ready(function() {
        $(".employeeItem").draggable();
    });
    

    【讨论】:

    • 另一个问题:在重叠事件上放置会触发两次放置,对于后台和前台事件
    • @Julian - 我认为那里有点棘手,因为可放置初始化中的“贪婪”选项,我们通常只用来触发最顶层的对象,不适用于兄弟姐妹(重叠的 fullCalendar 事件是。)我建议探索这篇文章 stackoverflow.com/questions/12724388 中的建议。或者,您可以在 fullCalendar 中关闭重叠并完全避免该问题。
    猜你喜欢
    • 2018-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多