Fullcalendar日双击回调

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

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

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

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") 

并且完美地工作:)

谢谢你的帮助。

更新2

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

 findClickedDay = (e) -> days = $("#calendar .fc-day") i = 0 while i  offset.left and mouseX  offset.top and mouseY  $("#calendar").bind "dblclick", (e) => clickedDay = findClickedDay(e); if clickedDay.length == 0 then return date = new Date(clickedDay.data('date')) alert "dblclick on date: #{date}" 

它适用于eventRender Click for jsfiddle链接。

eventRender在呈现事件时触发。 && dayRender是用于修改日期单元格的钩子。 单击dayRender文档

 eventRender: function(event, element) { element.bind('dblclick', function() { alert('double click!'); }); }, 

我认为这是一个常见的问题,通常需要一些黑客攻击。 @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); } }); 
  dayClick: function(date, jsEvent, view) { prevTime = typeof currentTime === 'undefined' || currentTime === null ? new Date().getTime() - 1000000 : currentTime; currentTime = new Date().getTime(); if (currentTime - prevTime < 500) { //double click call back console.log("this is double click"); } }, 

你可以兑现双击的时间

我遇到了与@Szymon Rut相同的问题,双击不在整个单元格中工作,在单元格的左上角没有响应。 对我有用的只是使用on()而不是bind()……

 dayFunction = function(date, cell) { cell.on('dblclick', {date: date}, function(e) { var view = 'month'; self.openAddEvent(e, view, e.data.date) }); } 

使currentTime成为一个静态变量,并在函数中包含张庭升的代码,然后它可以在任何’Click’处理程序中使用:

 FullCalendarActions = { currentTime: null, isDblClick : function() { var prevTime = typeof FullCalendarActions.currentTime === null ? new Date().getTime() - 1000000 : FullCalendarActions.currentTime; FullCalendarActions.currentTime= new Date().getTime(); return FullCalendarActions.currentTime - prevTime < 500; } } 

...在FullCalendar处理程序中使用:

 dayClick : function(date, jsEvent, view) { if (FullCalendarActions.isDblClick()){ // whatever... } }