我不希望人们尝试在我的fullCalendar中创建过去的事件。因此,一旦他们选择了日期/时间,我会按如下方式快速检查:
select: function(start, end, allDay) {
// need to check the day first. If the selected day/time < today, throw an alert
// otherwise allow the booking of the conference.
var now = calendar.fullCalendar('getDate');
if (start < now )
{
alert('You cannot book a conference in the past!' +start +now);
calendar.fullCalendar( 'unselect' );
}
else
{
// other stuff here
}
这很有效。如果我点击比现在更早的时间或日期,我会收到警告,说我不能这样做。完美吧?
我正在使用jQuery DatePicker,我可以点击小日历视图中的日期,然后在我的fullCalendar中查看该日期,该日期默认为仅限议程视图。它运作得很好:
$( "#datepicker" ).datepicker({
changeMonth: true,
changeYear: true,
minDate: 0,
maxDate: "+1Y",
onSelect: function(dateText) {
// fullCalendar only accepts a date in a specific format so parse the date
// from the jQuery DatePicker widget and use that result to move the calendar
// to the correct day.
var pd = $.fullCalendar.parseDate(dateText);
$('#calendar').fullCalendar('gotoDate', pd);
}
});
这个例程让我在议程视图中处于正确的一周。然后,我可以在该周选择要使用的日期。但是,如果我尝试在日期之前使用gotoDate方法创建事件,我也会收到有关过去创建事件的错误。似乎'gotoDate'方法实际上是设置日期。我可以在该日期或之后创建活动,但不能在该日期之前创建活动。
如果我只使用fullCalendar的导航方法,它可以完美地工作。但是,因为fullCalendar没有“跳转到日期”选项或小部件,我自己使用DatePicker创建了我认为合乎逻辑的事情。
那么,这是一个错误吗?或者我做错了什么?
答案 0 :(得分:2)
是的,感谢Kyoka和Ganeshk的评论回答我自己的问题。碰巧,fullCalendar('getDate')函数返回当前选择的日期而不是“今天”。这只是对我的文档的误解。那么解决方案就是使用一个新的Date对象,在这种情况下它可以完美地运行:
select: function(start, end, allDay) {
// need to check the day first. If the selected day/time < today, throw an alert
// otherwise allow the booking of the conference.
var now = new Date();
if (start < now )
{
alert('You cannot book a conference in the past!');
calendar.fullCalendar( 'unselect' );
}
else
{
// other stuff here
}
希望这也是对他人的帮助。