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

时间:2013-04-04 16:12:41

标签: jquery fullcalendar

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

采取以下设置:(Fiddle here

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)

感谢任何帮助。

3 个答案:

答案 0 :(得分:4)

我也在我的用例中遇到过这个问题,这是我在找到完整日程源代码后找到的对我有用的东西。您需要手动创建mousedownmouseup事件(从技术上讲,mouseup是可选的,但您可以使用它来重置{{{}的点击状态1}}),它包含你想要的元素的X和Y位置的坐标&#34;点击&#34;。同样重要的是td参数,需要将其设置为which,以便passes the isPrimaryMouseButton check

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

mousedown

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

答案 1 :(得分:0)

您可以在trigger divtd使用fc-today类{/ 1}}来使用jquery $('td.fc-today div').trigger('click'); 事件:

{{1}}

答案 2 :(得分:0)

修改Kevin的答案对我有点帮助。我需要通过键盘访问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/