FullCalendar 如何处理双击事件

3

我正在使用fullcalendar来实现我的日历功能。我使用了dayClickselect。在fullcalendar中,即使只是单击一天,也会调用select。因此,我将dayClick事件更改如下以处理单击事件。以下是我的代码:

dayClick: function(date, jsEvent, view) {
    isClicked = true;
},
select: function(startDate, endDate){
    if(isClicked){
        console.log('click');
        return;
    }
    var start_date = moment(startDate).format('Y-MM-DD');
    var end_date = moment(endDate).format('Y-MM-DD');
    if(start_date != end_date){
        end_date = moment(endDate).subtract(1, 'days').format('Y-MM-DD');
    }

    var set_default_duration = isClicked == true ? true : false ;
    isClicked = false;

    var user = $(t).attr('data-code');
    // Some other stuff
 },

实际上,我想处理双击以创建新事件。 我尝试使用jquery的dblclick事件函数与日历一起使用,但始终只触发单击。 问题是,在完成点击后立即触发选择操作,因此我无法处理双击。 有人可以帮助我在这种情况下处理双击吗?
以下是Fiddle:链接 编辑:我正在尝试处理空槽的双击以创建新事件。 目前,单击会执行此操作。
3个回答

2

我找到了答案。问题出在选择上。一旦点击日期,它就被选中了。所以,我使用unselect方法来清除选择,现在好像没问题了。下面是代码:

dayClick: function(date, jsEvent, view) {
    if(isClicked){
        isDblClicked = true;
        isClicked = false;
    }
    else{
        isClicked = true;
    }
    setTimeout(function(){
        isClicked = false;
    }, 250);
 },
 select: function(startDate, endDate, jsEvent){
    if(isClicked){
        $(t).fullCalendar('unselect');
        return;
    }
    // Other stuff
}

1
你可以新建一个变量,命名为clickedTimes或其他类似的名称,并将其设置为零。 每当你收到一次点击时,将clickedTimes设置为1,然后是2,检查clickedTimes是否为2。 当它达到2时,执行你想要的操作,并将其设置回零。

我已经尝试过了。在点击后立即触发选择事件,所以实际上第二次点击并没有发生。您能否请检查附加的fiddle并更新? - Linga
我不需要 eventClick。我不是在谈论 eventClick。我想要处理空时间段的双击事件来创建新的事件。目前,单击已经实现了这个功能。 - Linga
我不太明白你的问题,那我就抱歉了。 - Kris J.
感谢您的回答和关注。 :) - Linga

0
我是如何解决这个问题的: ...
dateClick: function() { 
    dateClickCallback();
  },

....

var dblclick = false;
function clear_click(){
    dblclick = false;
}

function dayClickCallback(){
    if(dblclick){
        alert('ok')
        dblclick = false;
    }else{
        dblclick = true;
        const myTimeout = setTimeout(clear_click, 300);
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接