Fullcalendar日双击回调

Szy*_*Rut 5 jquery fullcalendar

我需要在dblclick上工作的实现函数,就像dayClick回调一样.我尝试了所有的解决方案,但我没有找到任何解决方案,例如米歇尔的答案.顺便说一下,所有线程都很老了.

问题似乎微不足道,但我没有想法为什么它不起作用.

有谁知道在最新版本中应该怎么做?

UPDATE

好的,我发现问题:)当我设置此选项时它停止工作: selectable: true

我添加了这个:

dayRender: (date, element, view) ->
    element.bind "dblclick", ->
        alert "double click!"

dayClick: (date, jsEvent, view) ->
    $(".fc-highlight").removeClass("fc-highlight")
    $(jsEvent.toElement).addClass("fc-highlight")
Run Code Online (Sandbox Code Playgroud)

并且完美地工作:)

谢谢你的帮助.

更新2

但是,上述解决方案并不完美.有些元素涵盖了日期对象,并且它不适用于整个表面,所以我提出了另一个解决方案:

findClickedDay = (e) ->
    days = $("#calendar .fc-day")
    i = 0
    while i < days.length
        day = $(days[i])
        mouseX = e.pageX
        mouseY = e.pageY
        offset = day.offset()
        width = day.width()
        height = day.height()
        if mouseX > offset.left and mouseX < offset.left + width and mouseY > offset.top and mouseY < offset.top + height
          return day
        i++

eventAfterAllRender: (view) =>
    $("#calendar").bind "dblclick", (e) =>
        clickedDay = findClickedDay(e);
        if clickedDay.length == 0 then return
        date = new Date(clickedDay.data('date'))
        alert "dblclick on date: #{date}"
Run Code Online (Sandbox Code Playgroud)

val*_*lis 12

它适用于fullcalendar V1.x Click for jsfiddle链接.

eventRender同时被渲染事件触发.&& eventRender是用于修改日期单元格的钩子.单击dayRender文档

eventRender: function(event, element) {
    element.bind('dblclick', function() {
       alert('double click!');
    });
},
Run Code Online (Sandbox Code Playgroud)


sco*_*lls 5

我认为这是一个常见的问题,通常需要一些黑客攻击.@Valar Morghulas的事件渲染解决方案非常适合捕捉事件doubleclicks.对于日历的其余部分,也许这有点清洁.

(你基本上记得使用dateClick回调一次单击的日期,并在鼠标移动后忘记它)

jsfiddle演示

$('#calendar').fullCalendar({
    ...
    dayClick: dayClickCallback,
    eventRender: eventRenderCallback,
    ...
});

var slotDate;

function dayClickCallback(date){
    slotDate = date;
    $("#calendar").on("mousemove", forgetSlot);
}

function eventRenderCallback(event,element){
    element.on("dblclick",function(){
        dblClickFunction(event.start)          
    });   
}

function forgetSlot(){
    slotDate = null;
    $("#calendar").off("mousemove", forgetSlot);
}

function dblClickFunction(date){
    alert(date);
}

$("#calendar").dblclick(function() {
    if(slotDate){
        dblClickFunction(slotDate);
    }
});
Run Code Online (Sandbox Code Playgroud)