2015-04-07 115 views
4

我需要在dblclick上工作的函數,比如dayClick回調函數。我嘗試了所有我找到的解決方案,但沒有爲我工作,例如Michel's answer。順便說一下,所有的線程都很老舊。Fullcalendar day doubleclick回調

這個問題看起來很瑣碎,但我沒有想到爲什麼它不起作用。

有誰知道這應該怎麼做在最新版本?

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

而完美的作品: )

感謝您的幫助。

UPDATE 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}" 
+0

什麼,你所面臨的問題,什麼都沒有新的變化在我的知識中會影響這個功能的版本。 –

+0

它是我面臨的一個普遍問題,如果它滿足您的需求,接受答案,因爲它也會幫助其他人。 –

回答

10

它正常工作與eventRenderClick for jsfiddle link.

eventRender而觸發的事件被渲染。 & & dayRender是修改日間單元格的鉤子。 Click for dayRender docs

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

這不適用於我 – aayushi

+0

什麼版本的日曆是你使用,這個解決方案是爲1.x –

+0

是的,它的工作.... – aayushi

0
   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"); 
       } 
      }, 

你可以兌現時間雙擊

0

我遇到同樣的問題,因爲@Szymon車轍,與雙擊不是在整個細胞的工作,在左上角沒有響應的細胞。對我而言,簡單地使用on()而不是bind()...

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

嗯,不,不像可點擊區域不一致。它在一些單元格的左上角工作,但不是其他單元格。很奇怪。 –

+1

這似乎是因爲雙擊處理程序正在'.fc-day'上創建的,它具有比'.fc-content-skeleton'更低的z-index。任何特定日期的事件數量都會影響用戶點擊的區域。 解決辦法是將'pointer-events:none'添加到'.fc-content-skeleton'和'pointer-events:auto'到'.fc-event-container'中。 – mulquin

4

我認爲這是一個通常需要一些黑客攻擊的常見問題。 @Valar Morghulas的事件渲染解決方案很適合捕獲事件雙擊。對於日曆的其餘部分,也許這是一個更清潔。

(基本上,你還記得上使用dateClick回調一個單一的點擊日期和忘記它一旦鼠標移動)

jsfiddle demo

$('#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); 
    } 
});