Javascript JS Full日历日&;事件双击函数
我已经看到了几种处理这些操作的解决方案,但大多数都是针对V4之前的版本 我想添加处理每天双击和双击事件的函数 下面是我当前的设置,没有处理这些事件的部分Javascript JS Full日历日&;事件双击函数,javascript,jquery,fullcalendar,Javascript,Jquery,Fullcalendar,我已经看到了几种处理这些操作的解决方案,但大多数都是针对V4之前的版本 我想添加处理每天双击和双击事件的函数 下面是我当前的设置,没有处理这些事件的部分 <div id="calendar"></div> <script src="./vendor/jquery/jquery.min.js"></script> <script src="./vendor/fullcalendar/core/main.min.js"></scrip
<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>
下一个是非功能性的:
eventRender: function(event, element) {
$(element).on({
click: function() {
// Handle click...
},
dblclick: function() {
// Handle double click...
}
});
},
我相信我的问题可能源于版本差异。我希望能够链接到V4中处理此功能的示例或其他解决方案
编辑1以便我当前可以使用以下内容对单击/双击某一天或事件发出警报。由于某些原因,daydrender
功能仅在单击下半天时触发。我想在这方面得到帮助
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函数接收包含事件和元素对象的info参数。 您需要使用以下内容:
eventRender: function(info) {
info.el.addEventListener('click', function() {
alert('click')
});
}
请参阅我制作的JSFIDLE:正确使用
info.el
…但是OP想要双击。fullCalendar已经处理了单击操作(请参阅),因此无需为此添加单独的处理程序。如果您更新它以显示如何添加双击处理程序,那么您将获得我的upvote:-)Javascript有一个dblclick事件处理程序,只需添加该处理程序即可。如果OP需要同时处理这两个问题,那么有很多简单的方法可以使用single click事件来检测双击。不管怎样,这两个方面都有一个丑陋的实现:我不是OP,你为什么告诉我?我的评论的目的是让你用一个更好的例子来更新你的答案:-)我如何改变这一点,以便每天都增加听众?另外,是否可以通过右键单击来执行类似操作?我尝试将上述内容更改为daydrender
,但没有成功。与其纯粹依靠示例和猜测,为什么不阅读文档。它准确地告诉您回调中提供给您的信息以及格式。在v4中,提供了一个名为info
(而不是将事件和元素作为单独的参数)的参数。info
对象中包含元素。一旦找到该元素对象(根据Dario下面的回答),就可以以正常的方式将事件处理程序附加到它
eventRender: function(info) {
info.el.addEventListener('click', function() {
alert('click')
});
}