Javascript 显示多个事件源的事件取决于复选框';全日历中的选择
我正在添加Solgema Fullcalendar中的功能- (使用复选框选择并显示事件) 我的事件源看起来像:Javascript 显示多个事件源的事件取决于复选框';全日历中的选择,javascript,jquery,ajax,plone,fullcalendar,Javascript,Jquery,Ajax,Plone,Fullcalendar,我正在添加Solgema Fullcalendar中的功能- (使用复选框选择并显示事件) 我的事件源看起来像: eventSources: [ ... { url: '/admin_schedule/get_schedule_db_recurring_events_on_daysweek/',//"<?echo $data_path?>", type: 'GET',
eventSources: [
...
{
url: '/admin_schedule/get_schedule_db_recurring_events_on_daysweek/',//"<?echo $data_path?>",
type: 'GET',
data: {sch_teacher_id: sch_teacher_id},
backgroundColor: 'red',
}
],
$('.teacher').change(function (event) {
events1.data.sch_teacher_id = $(this).val();
events2.data.sch_teacher_id = $(this).val();
events3.data.sch_teacher_id = $(this).val();
$calendar.fullCalendar('refetchEvents');
});
var events1 = {
url: 'url1',
type: 'GET',
data: {sch_teacher_id: $('#teacher').val() },
success: function (response) {
return response;
}
};
var events2 = {
url: 'url2',
type: 'GET',
data: {sch_teacher_id: $('#teacher').val() },
backgroundColor: 'green',
success: function (response) {
return response;
}
};
var events3 = {
url: 'url3',
type: 'GET',
data: { sch_teacher_id: $('#teacher').val() },
backgroundColor: 'red',
success: function (response) {
return response;
}
};
eventSources: [
events1,
events2,
events3
],
var events = {
url: 'url',
type: 'GET',
data: { Id: $('#divId').val() },
success: function (response) {
return response;
}
};
$('#calendar').fullCalendar({
events: events
});
您需要,但在调用之前要小心更新数据参数(否则它将保持初始设置值)
编辑:用于声明事件对象的代码:
var events = {
url: 'url',
type: 'GET',
data: { Id: $('#divId').val() },
success: function (response) {
return response;
}
};
$('#calendar').fullCalendar({
events: events
});
Tocalaghan,它变得更好了,现在ajax工作得很好,但是schu teacher_id仍然很旧:$('.teacher').change(function(event){event.schu teacher_id=128;$calendar.fullCalendar('refetchEvents');});它不是您应该更改的事件参数,而是对初始化fullcalendar时创建的事件对象的引用。假设这被称为“事件”,您应该将event.schu teacher_id=128替换为events.data.schu teacher_id。看起来您已经匿名创建了事件对象,为了以后引用它,您需要在使用它之前创建它。创建一个事件对象(var event={url:'url',键入:'Get'…})并用ittocalan替换你的{url:'url',键入:'Get'…},看,这是因为在视图的开头:$(document).ready(函数(){var$calendar=$('#calendar');…var schu teacher_id=“;$calendar.fullCalendar({…所以我想我再次设置了php中schu teacher_id的值:var schu teacher_id=“”;但我不能假设它是空的。请参阅编辑以获取进一步的说明。您还应该能够使用eventSources,关键是您首先声明events对象,然后使用它设置fullcalendar对象,然后您就可以从更改()访问events.data.whateverParamToChangecheckboxtocallaghan的函数,它变得更好了,现在ajax工作得很好,但是sch_teacher_id仍然很旧:$('.teacher').change(函数(事件){event.schu teacher_id=128;$calendar.fullCalendar('refetchEvents');});它不是您应该更改的事件参数,而是对您在初始化fullcalendar时创建的事件对象的引用。假设这称为“事件”您应该将event.schu teacher_id=128替换为events.data.schu teacher_idIt看起来您已经匿名创建了事件对象,以便以后在使用它之前引用它。创建一个事件对象(var event={url:'url',type:'Get'.})并替换您的{url:'url',type:'Get'.}有了iTocalan,你看,这是因为在视图的开头:$(document).ready(function(){var$calendar=$('#calendar');…var schu teacher_id=“”;$calendar.fullCalendar({…所以我想我再次从php设置了schu teacher_id的值:var schu teacher_id=“”;但我不能假设它是空的。请参阅编辑以获取进一步的说明。您还应该能够使用eventSources,关键是您首先声明events对象,然后使用它设置fullcalendar对象,然后您就可以从更改()访问events.data.whateverParamToChange复选框的函数我不确定我是否理解您的编辑。您可以从url端点返回一系列事件,而不仅仅是一个。此外,这似乎是一个新问题我不确定我是否理解您的编辑。您可以从url端点返回一系列事件,而不仅仅是一个。而且这似乎是一个新问题
$('.CheckBoxClass').change(function () {
events.data.sch_teacher_id = $(this).val();
$('#calendar').fullCalendar('refetchEvents');
});
var events = {
url: 'url',
type: 'GET',
data: { Id: $('#divId').val() },
success: function (response) {
return response;
}
};
$('#calendar').fullCalendar({
events: events
});