Javascript 如何检查fullCalendar中某一天已存在的值
我正在制作日历,人们可以点击并预订不同的日子 添加到日历中的事件数据如下所示:Javascript 如何检查fullCalendar中某一天已存在的值,javascript,jquery,fullcalendar,Javascript,Jquery,Fullcalendar,我正在制作日历,人们可以点击并预订不同的日子 添加到日历中的事件数据如下所示: var myEvent = { user_id: 2345, title: 'this is a title', allDay: true, start: date.format(), end: date.format() }; dayClick: function(date, jsEvent, view) { var myEvent = { us
var myEvent = {
user_id: 2345,
title: 'this is a title',
allDay: true,
start: date.format(),
end: date.format()
};
dayClick: function(date, jsEvent, view) {
var myEvent = {
user_id: userid,
title: title,
allDay: true,
start: date.format(),
end: date.format()
};
var allEvents = allEvents = $('.calendar').fullCalendar('clientEvents');
$.each( allEvents, function( index, value ){
//add event if not exist
if(value.user_id != userid){
$('.calendar').fullCalendar( 'renderEvent', myEvent );
}
});
}
添加时,我想检查用户id是否存在,以便用户不再添加事件
我正在使用dayClick
事件,代码如下所示:
var myEvent = {
user_id: 2345,
title: 'this is a title',
allDay: true,
start: date.format(),
end: date.format()
};
dayClick: function(date, jsEvent, view) {
var myEvent = {
user_id: userid,
title: title,
allDay: true,
start: date.format(),
end: date.format()
};
var allEvents = allEvents = $('.calendar').fullCalendar('clientEvents');
$.each( allEvents, function( index, value ){
//add event if not exist
if(value.user_id != userid){
$('.calendar').fullCalendar( 'renderEvent', myEvent );
}
});
}
即使添加了值,也会添加事件。有更好/更简单的方法吗?你的逻辑是错误的。您将为每个与用户id不匹配的事件创建一个新事件。如果您的日历中有10个事件,您将创建10次相同的事件
var userid=1;
var title=“测试事件”;
$(文档).ready(函数(){
//页面现在已准备就绪,请初始化日历。。。
$(“.calendar”).fullCalendar({
dayClick:函数(日期、事件、视图){
var myEvent={
用户id:userid,
标题:标题,,
全天:没错,
开始:date.format(),
结束:date.format()/*vs HH:MM:SS*/,,
棍子:是的
};
var allEvents=$(“.calendar”).fullCalendar(“客户事件”);
var=false;
$.each(所有事件、函数(索引、值){
if(value.user\u id==userid&&new Date(value.start).toDateString()==new Date(Date).toDateString()){
存在=真;
}
});
如果(!存在){
$(“.calendar”).fullCalendar(“renderEvent”,myEvent);
}
},
defaultView:“month”,//可能的值:month、basicWeek、basicDay、agendaWeek、agendaDaDay
标题:{
左:“标题”,
中心:“,
右:“今天上一年、上一年、下一年、下一年”//可能的值:月、基本周、基本日、代理周、代理日、今天上一年、上一年、下一年、下一年
},
钮扣:{
上一个:“左单箭头”,
下一步:“右单箭头”,
上一年:“左双箭头”,
下一步:“右双箭头”
}
});
});代码>
您的逻辑错误。您将为每个与用户id不匹配的事件创建一个新事件。如果您的日历中有10个事件,您将创建10次相同的事件
var userid=1;
var title=“测试事件”;
$(文档).ready(函数(){
//页面现在已准备就绪,请初始化日历。。。
$(“.calendar”).fullCalendar({
dayClick:函数(日期、事件、视图){
var myEvent={
用户id:userid,
标题:标题,,
全天:没错,
开始:date.format(),
结束:date.format()/*vs HH:MM:SS*/,,
棍子:是的
};
var allEvents=$(“.calendar”).fullCalendar(“客户事件”);
var=false;
$.each(所有事件、函数(索引、值){
if(value.user\u id==userid&&new Date(value.start).toDateString()==new Date(Date).toDateString()){
存在=真;
}
});
如果(!存在){
$(“.calendar”).fullCalendar(“renderEvent”,myEvent);
}
},
defaultView:“month”,//可能的值:month、basicWeek、basicDay、agendaWeek、agendaDaDay
标题:{
左:“标题”,
中心:“,
右:“今天上一年、上一年、下一年、下一年”//可能的值:月、基本周、基本日、代理周、代理日、今天上一年、上一年、下一年、下一年
},
钮扣:{
上一个:“左单箭头”,
下一步:“右单箭头”,
上一年:“左双箭头”,
下一步:“右双箭头”
}
});
});代码>
不仅要添加您的事件,而且如果您有20个其他事件,其中用户ID不等于新事件的用户ID,那么您要添加20次事件
您只需使用循环来设置一个标志,指示您是否在(至少)一个其他事件中找到了用户ID,然后,在完成对所有事件的搜索后,根据该标志的状态决定是否添加该事件
dayClick: function(date, jsEvent, view) {
var myEvent = {
user_id: userid,
title: title,
allDay: true,
start: date.format(),
end: date.format()
};
var allEvents = allEvents = $('.calendar').fullCalendar('clientEvents');
var foundUser = false; //flag is false until we find a matching user ID
$.each(allEvents, function(index, value) {
if (value.user_id == userid) {
foundUser = true; //set the flag true
return false; //job done, so break out of the .each loop
}
});
//now we've searched through everything, we can make a final decision
if (foundUser == false) {
$('.calendar').fullCalendar('renderEvent', myEvent);
}
}
注意:也许值得理解的是,除了您使用“clientEvents”检索事件之外,这些都不是fullCalendar所特有的。其余的只是应用正确的逻辑来查找列表中的值,该值可以应用于各种情况。不仅要添加事件,而且如果您有20个其他事件,其中用户ID不等于新事件的用户ID,那么您要添加事件20次
您只需使用循环来设置一个标志,指示您是否在(至少)一个其他事件中找到了用户ID,然后,在完成对所有事件的搜索后,根据该标志的状态决定是否添加该事件
dayClick: function(date, jsEvent, view) {
var myEvent = {
user_id: userid,
title: title,
allDay: true,
start: date.format(),
end: date.format()
};
var allEvents = allEvents = $('.calendar').fullCalendar('clientEvents');
var foundUser = false; //flag is false until we find a matching user ID
$.each(allEvents, function(index, value) {
if (value.user_id == userid) {
foundUser = true; //set the flag true
return false; //job done, so break out of the .each loop
}
});
//now we've searched through everything, we can make a final decision
if (foundUser == false) {
$('.calendar').fullCalendar('renderEvent', myEvent);
}
}
注意:也许值得理解的是,除了您使用“clientEvents”检索事件之外,这些都不是fullCalendar所特有的。其余的只是应用正确的逻辑在列表中查找一个值,该值可以应用于各种情况。我希望用户能够选择他想要的天数,但限制为1天,因为系统有多个用户,它还必须能够在同一天注册不同的用户ID。在这种情况下,只需使用if(value.user\u id==userid)
并将条件更改为if(value.user\u id==userid&&value.start==date.format())
。那就行了。。我根据您的特定问题修改了答案。我希望用户能够选择他想要的任意天数,但限制为1/天,因为系统有多个用户,它还必须能够在同一天注册不同的用户id。在这种情况下,只需取if(value.user\u id==userid)
并将条件更改为if(value.user\u id==userid&&value.start==date.format())
。那就行了。。我根据你的特殊问题修改了答案。