我正在使用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)
感谢任何帮助。
答案 0 :(得分:4)
我也在我的用例中遇到过这个问题,这是我在找到完整日程源代码后找到的对我有用的东西。您需要手动创建mousedown
和mouseup
事件(从技术上讲,mouseup
是可选的,但您可以使用它来重置{{{}的点击状态1}}),它包含你想要的元素的X和Y位置的坐标&#34;点击&#34;。同样重要的是td
参数,需要将其设置为which
,以便passes the isPrimaryMouseButton
check。
考虑到这一点,代码看起来像这样(注意我更改了1
以使用$('#click')
事件,因此它只运行一次):
mousedown
这是一个工作小提琴: http://jsfiddle.net/vyxte25r/
答案 1 :(得分:0)
您可以在trigger
div
内td
使用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));
}
});
}