gpt4 book ai didi

javascript - 时间段选择的完整日历回调函数

转载 作者:行者123 更新时间:2023-12-02 22:44:32 25 4
gpt4 key购买 nike

如何获取所选的时间?

在我的场景中,我有一个可选择的日历,用户可以选择日历的某些单元格,然后如果所选时间小于 3 小时,它将继续并执行一些操作,但如果时差更大超过3小时,则会显示警报消息。

here is a sample but I want to do it before select event.

https://codepen.io/nasser-ali-karimi/pen/KKKNzRB?editors=0010

$(function() {
$('#calendar').fullCalendar({
selectable: true,
defaultView: 'agendaDay',
header: {
left: 'prev,next today',
center: 'title',
right: 'agendaDay'
},
select: function(startDate, endDate) {
// Find the time diff for checking the druation.
var fromTime = parseInt(new Date(startDate.format()).getTime()/1000);
var toTime = parseInt(new Date(endDate.format()).getTime()/1000);
var timeDiff = (toTime - fromTime)/3600; // will give difference in hrs

// Check if user selected time more than 3 hours then, show the warning.
if (timeDiff > 3) {
$('.fc-highlight').css('background', 'red');
}
else {
alert("continue !");
}
}
});

});

为了更好的用户体验,我想将所选部分的颜色更改为黄色或红色,以警告用户。但我不知道是否有内置功能。<​​/p>

使用Fullcalendar v3和moments.js!

最佳答案

根据@ADyson的指导,我终于可以做到这一点。

1-使用selectAllow为此。

2-根据条件改变背景颜色

我尝试对 .fc-highlight 使用直接更改,但它不起作用,因此我向 #calendar 添加一个类并使其恢复地面红色并且它起作用了。

#calendar.invalid-choice .fc-highlight {
background: red;
}

这是我所做的简要说明,但如果您愿意,可以查看附加的整个代码。

selectAllow: function(date) {
if (timeDiff > 3) {
$('#calendar').addClass('invalid-choice');
}
else {
$('#calendar').removeClass('invalid-choice');
}
},

演示 https://codepen.io/nasser-ali-karimi/pen/ExxNbMW

            
jQuery(document).ready(function($) {
$('body').append(`<div class="popover fade right in" role="tooltip" id="selected-hours" style="top: 670px; left: 670px; display: none;">
<div class="popover-data">
</div>
</div>`);

$('#calendar').fullCalendar({
selectable: true,
defaultView: 'agendaDay',
header: {
left: 'prev,next today',
center: 'title',
right: 'agendaDay'
},

selectAllow: function(date) {
// Find the time diff for checking the druation.
var fromTime = new Date(date.start.format()).getTime()/1000;
var toTime = new Date(date.end.format()).getTime()/1000;
var timeDiff = (toTime - fromTime)/3600; // will give difference in hrs

var offset = $('body').offset();
var left = event.pageX;
var top = event.pageY;
var theHeight = $('#selected-hours').height();
$('#selected-hours').show();
$('#selected-hours .popover-data').html(timeDiff).css({
'min-width': "20px",
'text-align': 'center',
});
if (timeDiff > 3) {
$('#calendar').addClass('invalid-choice');
}
else {
$('#calendar').removeClass('invalid-choice');
}
$('#selected-hours').css('left', (left + 'px'));
$('#selected-hours').css('top', (top - (theHeight / 2)) + 'px');
$('#selected-hours').css({
'z-index': '9999',
'position': 'absolute',
'display': 'block',
});
},
select: function(startDate, endDate, jsEvent, view, resource) {
$('#selected-hours').hide();
}
});

});
html, body {
margin: 0;
padding: 0;
font-family: "Lucida Grande",Helvetica,Arial,Verdana,sans-serif;
font-size: 14px;
}

#calendar {
max-width: 900px;
margin: 40px auto;
}

#calendar.invalid-choice .fc-highlight {
background: red;
}
<script src="https://unpkg.com/moment@2.24.0/min/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://unpkg.com/fullcalendar@3.10.1/dist/fullcalendar.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="https://unpkg.com/fullcalendar@3.10.1/dist/fullcalendar.min.css" crossorigin="anonymous">
<title>Page Title</title>
</head>
<body>
<h1>Full calendar change highlight background during selections</h1>
<div id='calendar'></div>
</body>
</html>

关于javascript - 时间段选择的完整日历回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58461289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com