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())
。那就行了。。我根据你的特殊问题修改了答案。