从外部触发FullCalendar的'dayClick'方法?

我正在使用Arshaw的FullCalendar,我正在模拟用户在页面加载后单击单元格。 我正在尝试这样做,因此我可能会转到诸如/Calendar/AddEvent类的URL,并且日历会自动打开一个对话框,其中包含我的添加事件表单。

采取以下设置:(小提琴在这里)

HTML

<div>
    <div id="calendar" data-year="2013" data-month="04" ></div>
</div>

jQuery的

$('#calendar').fullCalendar({
        firstDay: 1,
        selectable: true,
        dayClick: function (start, allDay, jsEvent, view) {
                    alert('You clicked me!');
        }
    });

默认情况下,今天的单元格具有.fc-today类,我试图通过执行以下操作来利用它:

$('.fc-today').trigger('click');

这似乎并不奏效。 无论如何,我可以做类似的事情

$('#calendar').fullCalendar('dayClick', date)

任何帮助表示赞赏。


我在我的用例中遇到了这个问题,这是我在完整日历源代码中进行挖掘后发现的作品。 您需要手动创建一个mousedownmouseup事件(技术上mouseup是可选的,但您可以使用它来重置td的'clicked'状态),其中包含您想要的元素的X和Y位置的坐标“点击”。 同样重要的是which参数需要设置为1以便它通过isPrimaryMouseButton检查。

考虑到这一点,代码看起来像这样(注意我改变$('#click')使用mousedown事件,以便它只运行一次):

$('#click').on('mousedown', function () { 
    var today = $('td.fc-today');
    var down = new $.Event("mousedown");
    var up = new $.Event("mouseup");
    down.which = up.which = 1;
    down.pageX = up.pageX = today.offset().left;
    down.pageY = up.pageY = today.offset().top;
    today.trigger(down);
    today.trigger(up); //this is optional if you just want the dayClick event, but running this allows you to reset the 'clicked' state of the <td>
});

这是一个工作小提琴:http://jsfiddle.net/vyxte25r/


您可以使用fc-today类在td内的div上使用jquery trigger事件:

 $('td.fc-today div').trigger('click');

修改凯文的答案有点为我工作。 我需要通过键盘访问dayClick事件。 使用dayRender方法将事件侦听器添加到每个单元格,可以让我们轻松处理每天的dayClick事件。 以下是我的成就:

dayRender: function(date, cell) {
  // Allow keyboard to access and interact with calendar days
  $(cell).attr("tabindex", "0").on("keydown", function(e) {
    if (e.which === 32 || e.which === 13) {
      var day = $(this);
      var down = new $.Event("mousedown");
      var up = new $.Event("mouseup");
      var eventParams = { which: 1, pageX: day.offset().left, pageY: day.offset().top };

      day.trigger($.extend(true, {}, down, eventParams));
      day.trigger($.extend(true, {}, up, eventParams));
    }
  });
}

相关文档:https://fullcalendar.io/docs/display/dayRender/

链接地址: http://www.djcxy.com/p/70633.html

上一篇: Externally triggering FullCalendar's 'dayClick' method?

下一篇: Simple way to flatten this array?