JS FullCalendar 日期和事件双击函数
JS FullCalendar Day & Event Double Click Functions
我见过几种处理这些操作的解决方案,但大多数解决方案都处理早于 V4 的版本。
我想添加处理一天双击和事件双击的函数。
下面是我当前的设置没有处理这些事件的部分。
<div id="calendar"></div>
<script src="./vendor/jquery/jquery.min.js"></script>
<script src="./vendor/fullcalendar/core/main.min.js"></script>
<script src="./vendor/fullcalendar/daygrid/main.min.js"></script>
<script src="./vendor/fullcalendar/timegrid/main.min.js"></script>
<script src="./vendor/fullcalendar/interaction/main.min.js"></script>
<script src="./vendor/fullcalendar/moment/main.min.js"></script>
<script>
var time = new Date();
var now = time.getHours()+":00:00";
document.addEventListener('DOMContentLoaded', function() {
var calendarEl = document.getElementById('calendar');
var calendar = new FullCalendar.Calendar(calendarEl, {
plugins: ['dayGrid','timeGrid','interaction'],
height: 550,
header:{
left: 'title',
center: '',
right: 'today dayGridMonth timeGridWeek timeGridDay prev,next'
},
minTime: '05:00:00',
maxTime: '22:00:00',
nowIndicator: true,
scrollTime: now,
selectable: true,
events: myEvents,
slotEventOverlap: false,
views:{
dayGrid:{eventLimit:4},
},
});
calendar.render();
});
</script>
现在我尝试了几种解决方案,第一个是下面返回的错误 "fullCalendar is not a function"
$('#calendar').fullCalendar({
eventRender: function(event, element) {
element.bind('dblclick', function() {
alert('double click!');
});
}
})
下一个是非功能性的:
eventRender: function(event, element) {
$(element).on({
click: function() {
// Handle click...
},
dblclick: function() {
// Handle double click...
}
});
},
我认为我的问题可能源于版本差异。我希望能链接到处理 V4 中此功能的示例或其他解决方案。
编辑 1 因此我目前可以使用以下内容为 clicking/double-clicking 一天或事件发出警报。出于某种原因,dayRender
函数仅在单击一天的下半部分时触发。我需要这方面的帮助。
eventRender: function(info) {
info.el.addEventListener('click', function() {
clickCount++;
if (clickCount === 1) {
singleClickTimer = setTimeout(function() {
clickCount = 0;
alert('single click');
}, 400);
} else if (clickCount === 2) {
clearTimeout(singleClickTimer);
clickCount = 0;
alert('double click');
}
});
},
dayRender: function(info) {
console.log(info.el);
info.el.addEventListener('click', function() {
clickCount++;
if (clickCount === 1) {
singleClickTimer = setTimeout(function() {
clickCount = 0;
alert('single click');
}, 400);
} else if (clickCount === 2) {
clearTimeout(singleClickTimer);
clickCount = 0;
alert('double click');
}
});
},
eventRender 函数接收一个包含事件和元素对象的信息参数。
您需要使用类似:
eventRender: function(info) {
info.el.addEventListener('click', function() {
alert('click')
});
}
看看我制作的这个 jsfiddle:https://jsfiddle.net/6jc7ngLo/
我见过几种处理这些操作的解决方案,但大多数解决方案都处理早于 V4 的版本。
我想添加处理一天双击和事件双击的函数。
下面是我当前的设置没有处理这些事件的部分。
<div id="calendar"></div>
<script src="./vendor/jquery/jquery.min.js"></script>
<script src="./vendor/fullcalendar/core/main.min.js"></script>
<script src="./vendor/fullcalendar/daygrid/main.min.js"></script>
<script src="./vendor/fullcalendar/timegrid/main.min.js"></script>
<script src="./vendor/fullcalendar/interaction/main.min.js"></script>
<script src="./vendor/fullcalendar/moment/main.min.js"></script>
<script>
var time = new Date();
var now = time.getHours()+":00:00";
document.addEventListener('DOMContentLoaded', function() {
var calendarEl = document.getElementById('calendar');
var calendar = new FullCalendar.Calendar(calendarEl, {
plugins: ['dayGrid','timeGrid','interaction'],
height: 550,
header:{
left: 'title',
center: '',
right: 'today dayGridMonth timeGridWeek timeGridDay prev,next'
},
minTime: '05:00:00',
maxTime: '22:00:00',
nowIndicator: true,
scrollTime: now,
selectable: true,
events: myEvents,
slotEventOverlap: false,
views:{
dayGrid:{eventLimit:4},
},
});
calendar.render();
});
</script>
现在我尝试了几种解决方案,第一个是下面返回的错误 "fullCalendar is not a function"
$('#calendar').fullCalendar({
eventRender: function(event, element) {
element.bind('dblclick', function() {
alert('double click!');
});
}
})
下一个是非功能性的:
eventRender: function(event, element) {
$(element).on({
click: function() {
// Handle click...
},
dblclick: function() {
// Handle double click...
}
});
},
我认为我的问题可能源于版本差异。我希望能链接到处理 V4 中此功能的示例或其他解决方案。
编辑 1 因此我目前可以使用以下内容为 clicking/double-clicking 一天或事件发出警报。出于某种原因,dayRender
函数仅在单击一天的下半部分时触发。我需要这方面的帮助。
eventRender: function(info) {
info.el.addEventListener('click', function() {
clickCount++;
if (clickCount === 1) {
singleClickTimer = setTimeout(function() {
clickCount = 0;
alert('single click');
}, 400);
} else if (clickCount === 2) {
clearTimeout(singleClickTimer);
clickCount = 0;
alert('double click');
}
});
},
dayRender: function(info) {
console.log(info.el);
info.el.addEventListener('click', function() {
clickCount++;
if (clickCount === 1) {
singleClickTimer = setTimeout(function() {
clickCount = 0;
alert('single click');
}, 400);
} else if (clickCount === 2) {
clearTimeout(singleClickTimer);
clickCount = 0;
alert('double click');
}
});
},
eventRender 函数接收一个包含事件和元素对象的信息参数。 您需要使用类似:
eventRender: function(info) {
info.el.addEventListener('click', function() {
alert('click')
});
}
看看我制作的这个 jsfiddle:https://jsfiddle.net/6jc7ngLo/