问题描述
所以,目前我正在 PHP 上创建一个 fullcalendar,它根据我的数据库中的日期显示事件,我的数据库是使用 ODBC 的 Microsoft Access,在添加 eventRender 函数之前,我的 fullcalendar 与模式弹出功能一起工作正常。
但是,在我从 stackoverflow 的示例中添加了这几行代码之后,我的 fullcalendar 没有显示。我想知道代码是否与我之前写的兼容。
这是我的日历代码
<script>
jQuery(document).ready(function($) {
$('#calendar').fullCalendar({
{
title: '<?PHP echo $id?>',start: '<?PHP echo $newEnd?>',end: '<?PHP echo $newEnd?>',calibrator: '<?PHP echo $calibrator?>',description : '<?PHP echo $description?>',extendedProps : {
ownerid : '<?PHP echo $ownerID?>',ownername : '<?PHP echo $ownerName?>',department : '<?PHP echo $depart?>',prevdate : '<?PHP echo $prevDate?>',duedate : '<?PHP echo $dueDate?>'
},color : '<?PHP echo $color?>'
},<?PHP } ?>
],eventRender: function eventRender( event,element,view ) {
return ['both',event.calibrator].indexOf($('#calibrator').val()) >= 0
}
$('#calibrator').on('change',function(){
$('#calendar').fullCalendar('rerenderEvents');
});
eventClick: function(event) {
$("#successModal").modal("show");
$("#successModal .modal-body #para").text(event.title);
$("#successModal .modal-body #para1").text(event.extendedProps.ownerid);
$("#successModal .modal-body #para2").text(event.extendedProps.ownername);
$("#successModal .modal-body #para3").text(event.extendedProps.department);
$("#successModal .modal-body #para4").text(event.description);
$("#successModal .modal-body #para5").text(event.extendedProps.prevdate);
$("#successModal .modal-body #para6").text(event.extendedProps.duedate);
}
});
});
</script>
事件渲染部分代码
eventRender: function eventRender( event,function(){
$('#calendar').fullCalendar('rerenderEvents');
});
经过一些建议,我的事件显示为外部和内部选项,但当我选择这两个选项时不显示
<script>
jQuery(document).ready(function($){
$('#calendar').fullCalendar({
header: {
left: 'prevYear,nextYear',center: 'title',right: 'prev,next today'
},defaultview: 'month',showNonCurrentDates:false,fixedWeekCount:false,contentHeight:"auto",handleWindowResize:true,events: [
<?PHP
include 'connect.PHP';
function getColor($date) {
$currentDate = date('Y-m-d');
$oneweekDate = date('Y-m-d',strtotime('+1 week'));
$eventColor = '';
if($date < $currentDate){
$eventColor = '#FF0000';
} else if($date >= $currentDate && $date < $oneweekDate){
$eventColor = '#FFA500';
} else{
$eventColor = '#008000';
}
return $eventColor;
}
$sql="SELECT * FROM masterlist1 WHERE Tool_Status = 'Active'";
$result=odbc_exec($conn,$sql);
while($row=odbc_fetch_array($result)){
$newEnd = date("Y-m-d",strtotime($row['Calibration_Due_Date']));
$color = getColor($newEnd);
$id = $row['Form_Tracking_ID'];
$ownerID = $row['Owner_I_Employee_ID'];
$ownerName = $row['Owner_I_Name'];
$calibrator = $row['Calibrator'];
$description = $row['Description1'];
$prevDate = date("F j,Y",strtotime($row['Date2']));
$dueDate = date("F j,strtotime($row['Calibration_Due_Date']));
$depart = $row['Department1'];
?>
{
title: '<?PHP echo $id?>',event.calibrator].indexOf($('#calibrator').val()) >= 0
},eventClick: function(event) {
$("#successModal").modal("show");
$("#successModal .modal-body #para").text(event.title);
$("#successModal .modal-body #para1").text(event.extendedProps.ownerid);
$("#successModal .modal-body #para2").text(event.extendedProps.ownername);
$("#successModal .modal-body #para3").text(event.extendedProps.department);
$("#successModal .modal-body #para4").text(event.description);
$("#successModal .modal-body #para5").text(event.extendedProps.prevdate);
$("#successModal .modal-body #para6").text(event.extendedProps.duedate);
}
});
$('#calibrator').on('change',function(){
$('#calendar').fullCalendar('rerenderEvents');
});
});
</script>
这是我的选择器代码
<select name="calibrator" id="calibrator">
<option value="Both">Both</option>
<option value="Internal">Internal</option>
<option value="External">External</option>
</select>
解决方法
在 Adyson 的帮助下,我能够查明错误并使代码正常工作。
在此之前的问题是我应该将 rerenderevents 部分放在 fullcalendar JS 代码之外,而我在调用 eventRender 函数后忘记了一个 ','。
下面是我选择器部分的代码
<select name="calibrator" id="calibrator">
<option value="Both">Both</option>
<option value="Internal">Internal</option>
<option value="External">External</option>
</select>
我的全日历代码
<script>
jQuery(document).ready(function($){
$('#calendar').fullCalendar({
header: {
left: 'prevYear,nextYear',center: 'title',right: 'prev,next today'
},defaultView: 'month',showNonCurrentDates:false,fixedWeekCount:false,contentHeight:"auto",handleWindowResize:true,events: [
<?php
include 'connect.php';
function getColor($date) {
$currentDate = date('Y-m-d');
$oneweekDate = date('Y-m-d',strtotime('+1 week'));
$eventColor = '';
if($date < $currentDate){
$eventColor = '#FF0000';
} else if($date >= $currentDate && $date < $oneweekDate){
$eventColor = '#FFA500';
} else{
$eventColor = '#008000';
}
return $eventColor;
}
$sql="SELECT * FROM masterlist1 WHERE Tool_Status = 'Active'";
$result=odbc_exec($conn,$sql);
while($row=odbc_fetch_array($result)){
$newEnd = date("Y-m-d",strtotime($row['Calibration_Due_Date']));
$color = getColor($newEnd);
$id = $row['Form_Tracking_ID'];
$ownerID = $row['Owner_I_Employee_ID'];
$ownerName = $row['Owner_I_Name'];
$calibrator = $row['Calibrator'];
$description = $row['Description1'];
$prevDate = date("F j,Y",strtotime($row['Date2']));
$dueDate = date("F j,strtotime($row['Calibration_Due_Date']));
$depart = $row['Department1'];
?>
{
title: '<?php echo $id?>',start: '<?php echo $newEnd?>',end: '<?php echo $newEnd?>',calibrator: '<?php echo $calibrator?>',description : '<?php echo $description?>',extendedProps : {
ownerid : '<?php echo $ownerID?>',ownername : '<?php echo $ownerName?>',department : '<?php echo $depart?>',prevdate : '<?php echo $prevDate?>',duedate : '<?php echo $dueDate?>'
},color : '<?php echo $color?>'
},<?php } ?>
],eventRender: function eventRender( event,element,view ) {
return ['Both',event.calibrator].indexOf($('#calibrator').val()) >= 0
},eventClick: function(event) {
$("#successModal").modal("show");
$("#successModal .modal-body #para").text(event.title);
$("#successModal .modal-body #para1").text(event.extendedProps.ownerid);
$("#successModal .modal-body #para2").text(event.extendedProps.ownername);
$("#successModal .modal-body #para3").text(event.extendedProps.department);
$("#successModal .modal-body #para4").text(event.description);
$("#successModal .modal-body #para5").text(event.extendedProps.prevdate);
$("#successModal .modal-body #para6").text(event.extendedProps.duedate);
}
});
$('#calibrator').on('change',function(){
$('#calendar').fullCalendar('rerenderEvents');
});
});
</script>
对于我的完整日历代码,它带有一个模式弹出窗口,使用从数据库中获取的数据显示事件的详细信息。