单击鼠标右键时是否单击触发?我想实现一个带有完整日历的右键菜单,但它只有dayClick事件,我认为只有在单击鼠标左键时才会触发。我在想像
dayClick: function(date, allDay, jsEvent){
if (jsEvent.button === 1){
//show menu
}else{
//do something with day
}
}
但单击鼠标右键时不会触发dayClick ....还有其他想法吗?
答案 0 :(得分:9)
尝试将mousedown
绑定到eventRender
事件中的每个FullCalndar事件:
var events_array = [{
title: 'Test1',
start: new Date(2013, 11, 20)
}, {
title: 'Test2',
start: new Date(2013, 11, 21)
}];
$('#mycalendar:not(".fc-event")').on('contextmenu', function (e) {
e.preventDefault()
})
$('#mycalendar').fullCalendar({
events: events_array,
header: {
left: 'prevYear,prev,next,nextYear today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
eventRender: function (event, element) {
element.bind('mousedown', function (e) {
if (e.which == 3) {
alert('Right mouse button pressed');
}
});
}
});
您可以在页面上禁用右键单击,并使其仅对以下事件执行操作:
$('#mycalendar:not(".fc-event")').on('contextmenu', function(e){ e.preventDefault() })
答案 1 :(得分:3)
您的答案为否,单击鼠标右键时不会触发,但您可以尝试mousedown
事件,请查看:
jQuery(document.body).on("mousedown", function(event){
if(event.button==2){
//do what you want
}
});
答案 2 :(得分:0)
在我的情况下,我首先禁用右键单击上下文菜单:
$("#calendar").on("contextmenu",function (event) {
event.preventDefault();
});
然后在渲染事件中我添加:
eventRender: function(event, element) {
...
var event2=event;
element.on('contextmenu', function (event) { showMenu(event2.start,event2,event.pageX,event.pageY); });
...
}
其中ShowMenu是我自己的菜单Div with options,在相同的光标位置......
答案 3 :(得分:0)
以下是我处理完整日历的右键单击事件的解决方案。编辑dayMousedown
函数如下fullcalendar.js
dayMousedown: function(ev) {
var view = this.view;
// HACK
// This will still work even though bindDayHandler doesn't use GlobalEmitter.
if (GlobalEmitter.get().shouldIgnoreMouse()) {
return;
}
switch (ev.which) {
case 1:
this.dayClickListener.startInteraction(ev);
break;
case 2:
alert('Middle Mouse button pressed.');
break;
case 3:
// here we can handle right click functionality
this.dayRightClickListener.startInteraction(ev);
break;
default:
alert('You have a strange Mouse!');
}
if (view.opt('selectable')) {
this.daySelectListener.startInteraction(ev, {
distance: view.opt('selectMinDistance')
});
}
}
我实施了dayRightClickListener
功能来处理我的要求。