gpt4 book ai didi

php - Fullcalendar 不渲染(使用 eventRender)

转载 作者:行者123 更新时间:2023-11-29 19:22:36 24 4
gpt4 key购买 nike

我想根据数据库为事件着色。我使用事件渲染。完整代码如下:

  $(document).ready(function() {
var date = new Date();
var calendar = $('#calendar').fullCalendar({

header:
{
left: 'prev,next ',
center: 'title',
right: 'today'
},

selectable: true,
selectHelper: true,
fixedWeekCount: false,
allDayDefault: true,
editable: true,

events: "http://localhost/calendar_directory/calendar_db_connect.php",

eventRender: function (event, element, view)
{
if (event.confirmed == 0)
{
event.color = "#FFB999";
}
else
{
event.color = "#528881";
}
},
select: function(start, end) {
var title;
var beforeToday = false;
var check = $.fullCalendar.formatDate(start, "YYYY-MM-DD");
var today = $.fullCalendar.formatDate(moment(), "YYYY-MM-DD");
if(check < today)
{
beforeToday = true;
}
else
{
title = prompt('Event Title:');
}

if (title && !beforeToday)
{
var start = $.fullCalendar.formatDate(start, "YYYY-MM-DD");
var end = $.fullCalendar.formatDate(end, "YYYY-MM-DD");
$.ajax(
{
url: 'http://localhost/calendar_directory/add_events.php',
data: 'title='+ title+'&start='+ start +'&end='+ end ,
type: "POST",
success: function(json)
{
}
});

calendar.fullCalendar('renderEvent',
{
title: title,
start: start,
end: end,
},
true // make the event "stick"
);
}
calendar.fullCalendar('unselect');
},

eventClick: function(event, jsEvent, view)
{
//set the values and open the modal
$("#eventInfo").html(event.description);
$("#eventLink").attr('href', event.url);
$("#eventContent").dialog({ modal: true, title: event.title });
},

eventDrop: function(event, delta)
{
var check = $.fullCalendar.formatDate(event.start, "YYYY-MM-DD");
var today = $.fullCalendar.formatDate(moment(), "YYYY-MM-DD");
if(check < today) {
alert('Select an other start time, after today!');
}
else
{
var start = $.fullCalendar.formatDate(event.start, "YYYY-MM-DD");
var end = $.fullCalendar.formatDate(event.end, "YYYY-MM-DD");
$.ajax(
{
url: 'http://localhost/calendar_directory/update_events.php',
data: 'title='+ event.title+'&start='+ start +'&end='+ end +'&id='+ event.id ,
type: "POST",
});
}
},
eventResize: function(event)
{
var start = $.fullCalendar.formatDate(event.start, "YYYY-MM-DD");
var end = $.fullCalendar.formatDate(event.end, "YYYY-MM-DD");

$.ajax(
{
url: 'http://localhost/calendar_directory/update_events.php',
data: 'title='+ event.title+'&start='+ start +'&end='+ end +'&id='+ event.id ,
type: "POST",
});
},

eventClick: function(event)
{
var decision = confirm("Do you really want to confirm that?");
if (decision)
{
$.ajax(
{
url: "http://localhost/calendar_directory/confirm_events.php",
data: "&id=" + event.id,
type: "POST",
success: function(json)
{
console.log("confirmed");
//event.backgroundColor = 'green';
//$('#calendar').fullCalendar( 'rerenderEvents' );
}
});
}
}
});

(请忽略模态的 clickEvent)。问题是,它不会第一次更改事件的颜色(页面的首次加载)。但是当我删除/调整事件大小时,所有事件都会获得正确的颜色。

Before drop

After drop

表结构:id - 整数,PR标题-varchar开始日期时间结束日期时间已确认 - int(可以是 0 或 1)<- 颜色应据此更改

最佳答案

eventRender 方法在创建事件的相应 CSS 之后运行。因此,在此过程中更改与格式化/渲染相关的事件属性没有任何效果 - 它们已经被处理。

幸运的是,您还获得了在回调中传递给您的“element”参数 - 这使您可以访问渲染的 HTML,然后您可以对其进行操作。

设置事件的“color”属性实际上会影响渲染元素的背景和边框颜色,因此我们可以替换您所做的:

eventRender: function (event, element, view) 
{
if (event.confirmed == 0)
{
element.css("background-color", "#FFB999");
element.css("border-color", "#FFB999");
}
else
{
element.css("background-color", "#528881");
element.css("border-color", "#528881");
}
}

这应该会达到预期的效果。可以说,这是 fullCalendar 中的一个错误/不需要的功能 - 您仍然希望能够完全操纵事件的属性并期望它们生效。另一方面,通过有效地获取“element”参数,您可以完全控制事件的呈现,而不仅仅是通过设置事件的属性。如果此方法在创建元素之前运行,您将无法访问该元素,也无法获得所有额外的功能。因此,这是一种权衡,但值得了解其内部原理,以便了解您可以更改什么,以及在此过程中何时可以更改。

关于php - Fullcalendar 不渲染(使用 eventRender),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42362414/

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