Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果完整日历中已存在事件,则不允许选择日期_Php_Jquery_Fullcalendar - Fatal编程技术网

Php 如果完整日历中已存在事件,则不允许选择日期

Php 如果完整日历中已存在事件,则不允许选择日期,php,jquery,fullcalendar,Php,Jquery,Fullcalendar,正如您在屏幕截图中所看到的,我可以选择一个已经作为事件的日期,如何发出警报或禁用现有事件的日期 在这里,我附加jquery源iam,使用我使用的select函数来选择事件,请帮助我 我有一个要求,即我一次只能预订一个活动,如果活动已经创建,则不允许在同一天创建另一个活动 第一:我必须禁用选择 第二:我必须显示“当天已预订”的警报 /*初始化日历 -----------------------------------------------------------------*/ //日历事件的日

正如您在屏幕截图中所看到的,我可以选择一个已经作为事件的日期,如何发出警报或禁用现有事件的日期

在这里,我附加jquery源iam,使用我使用的select函数来选择事件,请帮助我

我有一个要求,即我一次只能预订一个活动,如果活动已经创建,则不允许在同一天创建另一个活动

第一:我必须禁用选择 第二:我必须显示“当天已预订”的警报

/*初始化日历
-----------------------------------------------------------------*/
//日历事件的日期(虚拟数据)
变量日期=新日期()
var d=date.getDate(),
m=date.getMonth(),
y=日期。getFullYear()
$(“#日历”).fullCalendar({
标题:{
左:“上一个,下一个今天”,
中心:'标题',
右图:“月,agendaWeek,agendaDay”
},
按钮文字:{
今天:"今天",,
月:'月',
周:“周”,
day:“day”
},
是的,
选择:函数(开始、结束、jsEvent、视图){
if(start.isBefore(矩())){
$(“#日历”).fullCalendar('unselect');
返回false;
}
//开始包含您选择的日期
//结束包含结束日期。
//注意:结束日期是排他性的(自v2起新)。
$(.fc状态突出显示”).removeClass(“fc状态突出显示”);
$(“td[data date=“+start.format('YYYY-MM-DD')+”])addClass(“fc状态突出显示”);
var allDay=!start.hastinme()&&!end.hastinme();
//console.log(视图);
警报([“事件开始日期:”+时刻(开始).format(),
“事件结束日期:”+时刻(结束).format(),
全天:“+全天]。加入(“\n”);
},
//随机默认事件
活动:[
{
标题:“全天活动”,
开始日期:新日期(y、m、1),
背景颜色:'#f56954',//红色
边框颜色:'#f56954'//红色
},
{
标题:“长期活动”,
开始日期:新日期(y、m、d-5),
结束:新日期(y、m、d-2),
背景颜色:'#f39c12',//黄色
边框颜色:'#f39c12'//黄色
},
{
标题:"会议",,
开始日期:新日期(y、m、d、10、30),
全天:没错,
背景颜色:'#0073b7',//蓝色
边框颜色:'#0073b7'//蓝色
},
{
标题:"午餐",,
开始日期:新日期(y、m、d、12、0),
结束:新日期(y、m、d、14、0),
全天:错,
背景颜色:'#00c0ef',//信息(浅绿色)
边框颜色:'#00c0ef'//信息(浅绿色)
},
{
标题:"生日派对",,
开始:新日期(y、m、d+1、19、0),
结束:新日期(y、m、d+1、22、30),
全天:错,
背景色:“#00a65a”,//成功(绿色)
边框颜色:'#00a65a'//成功(绿色)
},
{
标题:“点击谷歌”,
开始日期:新日期(y、m、28),
结束:新日期(y、m、29),
网址:'http://google.com/',
背景色:'#3c8dbc',//主色(浅蓝色)
边框颜色:'#3c8dbc'//主色(浅蓝色)
},
{
标题:“正常事件”,
开始:“2018-02-05T12:00:00-00:00”,
结束:“2018-02-05T13:00:00-00:00”,
id:5,
颜色:“006633”,
可编辑:false,
全天:错
}
],
可编辑:false,
可拖放:true,//这允许将内容拖放到日历上!!!
drop:function(date,allDay){//在删除某些内容时调用此函数
//检索已删除元素的存储事件对象
var originalEventObject=$(this).data('eventObject')
//我们需要复制它,这样多个事件就不会引用同一个对象
var copiedEventObject=$.extend({},originalEventObject)
//将其指定为报告的日期
copiedEventObject.start=日期
copiedEventObject.allDay=全天
copiedEventObject.backgroundColor=$(this.css('background-color'))
copiedEventObject.borderColor=$(this.css('border-color'))
//在日历上呈现事件
//最后一个'true'参数确定事件是否“持续”(http://arshaw.com/fullcalendar/docs/event_rendering/renderEvent/)
$(“#calendar”).fullCalendar('renderEvent',copiedEventObject,true)
//是否选中了“删除后删除”复选框?
如果($('#drop remove')。是(':checked')){
//如果是,请从“可拖动事件”列表中删除该元素
$(this.remove())
}
},
//阅读事件
标题:{
左:'',
中间:“上一个标题下一个”,
对:“”
},
eventClick:函数(事件、jsEvent、视图){
//设置值并打开模式对话框
//清汤
/* initialize the calendar
         -----------------------------------------------------------------*/
        //Date for the calendar events (dummy data)
        var date = new Date()
        var d    = date.getDate(),
            m    = date.getMonth(),
            y    = date.getFullYear()
        $('#calendar').fullCalendar({
          header    : {
            left  : 'prev,next today',
            center: 'title',
            right : 'month,agendaWeek,agendaDay'
          },
          buttonText: {
            today: 'today',
            month: 'month',
            week : 'week',
            day  : 'day'
          },
          selectable: true,
            select: function(start, end, jsEvent, view) {
                if(start.isBefore(moment())) {
                    $('#calendar').fullCalendar('unselect');
                    return false;
                }
                 // start contains the date you have selected
                 // end contains the end date. 
                 // Caution: the end date is exclusive (new since v2).
                 $(".fc-state-highlight").removeClass("fc-state-highlight");
                 $("td[data-date="+start.format('YYYY-MM-DD')+"]").addClass("fc-state-highlight");
                 var allDay = !start.hasTime() && !end.hasTime();
                 //console.log(view);
                 alert(["Event Start date: " + moment(start).format(),
                        "Event End date: " + moment(end).format(),
                        "AllDay: " + allDay].join("\n"));
            },
          //Random default events
          events    : [
            {
              title          : 'All Day Event',
              start          : new Date(y, m, 1),
              backgroundColor: '#f56954', //red
              borderColor    : '#f56954' //red
            },
            {
              title          : 'Long Event',
              start          : new Date(y, m, d - 5),
              end            : new Date(y, m, d - 2),
              backgroundColor: '#f39c12', //yellow
              borderColor    : '#f39c12' //yellow
            },
            {
              title          : 'Meeting',
              start          : new Date(y, m, d, 10, 30),
              allDay         : true,
              backgroundColor: '#0073b7', //Blue
              borderColor    : '#0073b7' //Blue
            },
            {
              title          : 'Lunch',
              start          : new Date(y, m, d, 12, 0),
              end            : new Date(y, m, d, 14, 0),
              allDay         : false,
              backgroundColor: '#00c0ef', //Info (aqua)
              borderColor    : '#00c0ef' //Info (aqua)
            },
            {
              title          : 'Birthday Party',
              start          : new Date(y, m, d + 1, 19, 0),
              end            : new Date(y, m, d + 1, 22, 30),
              allDay         : false,
              backgroundColor: '#00a65a', //Success (green)
              borderColor    : '#00a65a' //Success (green)
            },
            {
              title          : 'Click for Google',
              start          : new Date(y, m, 28),
              end            : new Date(y, m, 29),
              url            : 'http://google.com/',
              backgroundColor: '#3c8dbc', //Primary (light-blue)
              borderColor    : '#3c8dbc' //Primary (light-blue)
            },
            {
            title: 'normal_event',
            start: "2018-02-05T12:00:00-00:00",
            end: "2018-02-05T13:00:00-00:00",
            id: 5,
            color: "#006633",
            editable: false,
            allDay: false
            }
          ],
          editable  : false,
          droppable : true, // this allows things to be dropped onto the calendar !!!
          drop      : function (date, allDay) { // this function is called when something is dropped

            // retrieve the dropped element's stored Event Object
            var originalEventObject = $(this).data('eventObject')

            // we need to copy it, so that multiple events don't have a reference to the same object
            var copiedEventObject = $.extend({}, originalEventObject)

            // assign it the date that was reported
            copiedEventObject.start           = date
            copiedEventObject.allDay          = allDay
            copiedEventObject.backgroundColor = $(this).css('background-color')
            copiedEventObject.borderColor     = $(this).css('border-color')

            // render the event on the calendar
            // the last `true` argument determines if the event "sticks" (http://arshaw.com/fullcalendar/docs/event_rendering/renderEvent/)
            $('#calendar').fullCalendar('renderEvent', copiedEventObject, true)

            // is the "remove after drop" checkbox checked?
            if ($('#drop-remove').is(':checked')) {
              // if so, remove the element from the "Draggable Events" list
              $(this).remove()
            }

          },
          //Read Events
            header: {
                left: '',
                center: 'prev title next',
                right: ''
            },
            eventClick:  function(event, jsEvent, view) {
                //set the values and open the modal
                //console.log(event);
                //$("#eventInfo").html(event.description);
                //$("#eventLink").attr('href', event.url);
                //$("#eventContent").dialog({ modal: true, title: event.title });
            },
        })

        /* ADDING EVENTS */
        var currColor = '#3c8dbc' //Red by default
        //Color chooser button
        var colorChooser = $('#color-chooser-btn')
        $('#color-chooser > li > a').click(function (e) {
          e.preventDefault()
          //Save color
          currColor = $(this).css('color')
          //Add color effect to button
          $('#add-new-event').css({ 'background-color': currColor, 'border-color': currColor })
        })
        $('#add-new-event').click(function (e) {
          e.preventDefault()
          //Get value and make sure it is not null
          var val = $('#new-event').val()
          if (val.length == 0) {
            return
          }

          //Create events
          var event = $('<div />')
          event.css({
            'background-color': currColor,
            'border-color'    : currColor,
            'color'           : '#fff'
          }).addClass('external-event')
          event.html(val)
          $('#external-events').prepend(event)

          //Add draggable funtionality
          init_events(event)

          //Remove event from text input
          $('#new-event').val('')
        })
    });
selectAllow: function(selectInfo) {
  //since we're only interested in whole days, set all times to the start/end of their respective day
  selectInfo.start.startOf("day");
  selectInfo.end.startOf("day");

  var evts = $("#calendar").fullCalendar("clientEvents", function(evt) {
    var st = evt.start.clone().startOf("day");
    if (evt.end) { var ed = evt.end.clone().startOf("day"); }
    else { ed = st; }

    //return true if the event overlaps with the selection
    return (selectInfo.start.isSameOrBefore(ed) && selectInfo.end.isSameOrAfter(st));
  });

  //return true if there are no events overlapping that day
  return evts.length == 0;
},