jQuery   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了jquery – fullcalendar月视图中单日的单个事件大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用fullCalendar库来添加事件.认视图是月份,我正在从数据库加载数据.此外,无论用户选择什么,都存储在数据库中.我这里有两个问题.首先,当页面加载时,库在同一天为同一事件添加两行.其次,我想限制用户在一天内添加一个事件.因此,没有一天会有多个事件.我使用以下代码加载数据,并且还存在click事件.

jquery – fullcalendar月视图中单日的单个事件

$('#calendar').fullCalendar({

        header: {
                left   : 'prev,next',center : 'title',},defaultView: 'month',defaultDate: today,SELEctable: true,navLinks: true,// can click day/week names to navigate views
        SELEctHelper: true,/*Load all the events from the database on page load*/       
            events: {

                    //Don't have to make an ajax call because full calendar will make the call 
                    //Error and success functions are available. 
                    //On success we will populate the data which is the temp's Availability.
                    url: loadDataUrl,error: function(error) {
                        console.log("error == "+JSON.Stringify(error));
                    },success: function(data){


                        var title = 'Availability';
                        var eventData;

                            for(var j=0;j<data.length;j++)
                            {
                                // $('#calendar').fullCalendar( 'removeEvent',data[j]._id);



                                var startDate = data[j].date;
                                        if (titlE) {
                                            eventData = {

                                                title: title,start: startDate

                                            };
                                            $('#calendar').fullCalendar('renderEvent',eventData,truE); // stick? = true
                                        }
                                        $('#calendar').fullCalendar('unSELEct');
                                    }


                    }
               },SELEct: function(start,end,jsEvent,view) {


                          var check = moment(start,'DD.Mm.YYYY').format('YYYY-MM-DD');
                          var today = moment(new Date(),'DD.Mm.YYYY').format('YYYY-MM-DD');

                           if(check < today)
                                {
                                    // PrevIoUs Day. show message if you want otherwise do nothing.
                                            // So it will be unSELEctable
                                            alert("cant SELEct prevIoUs dates!");
                                            $('#calendar').fullCalendar('unSELEct');
                                }
                            else
                                {
                                        var title = 'Availability';
                                        var eventData;

                                        if (titlE) {
                                            eventData = {

                                                title: title,start: start

                                            };
                                            $('#calendar').fullCalendar('renderEvent',truE); // stick? = true
                                            sendData(start);


                                        }
                                        $('#calendar').fullCalendar('unSELEct');

                                }               
        }       });

请帮助我解决这个问题,因为我无法弄清楚我哪里出错了.如果检查图片,则会创建两行.但我不知道这是怎么回事.此外,只有在我尝试加载动态数据时才会发生这种情况.它适用于静态数据.

这是JSfiddle链接

解决方法

好的,我终于得到了我的问题的答案.我不得不在ajax的成功函数调用fullCalendar函数.我在下面提到了这个:

var eventArr = [];
    var eventData1 ;

    $.ajax({
        url: loadDataUrl,datatype: 'json',type: 'GET',success: function(data)
        {
            eventArr = data;
            eventData1 = eventArr;

            console.log("event data == == "+eventData1);


    //Full calendar library.
    $('#calendar').fullCalendar({

                header: {
                        left   : 'prev,SELEctOverlap : false,// can click day/week names to navigate views
                SELEctHelper: true,events: eventData1,//This will load the events

                SELEct: function(start,view) {
                    console.log("View == = = ="+view);
                    var check = moment(start,'DD.Mm.YYYY').format('YYYY-MM-DD');
                    var today = moment(new Date(),'DD.Mm.YYYY').format('YYYY-MM-DD');


                     alert('Current view: ' + view.Name);
                        if(check < today)
                            {
                                        // PrevIoUs Day. show message if you want otherwise do nothing.
                                        // So it will be unSELEctable
                                        alert("cant SELEct prevIoUs dates!");
                                        $('#calendar').fullCalendar('unSELEct');
                            }
                            else {


                                        var title = 'Availability';
                                        var eventData;

                                        if (titlE) {
                                            eventData = {
                                                title: title,start: start                                                    
                                            };
                                            $('#calendar').fullCalendar('renderEvent',truE); // stick? = true


                                            sendData(start);


                                        }
                                        $('#calendar').fullCalendar('unSELEct');


                            }

        },eventClick: function(calEvent,view) {
                                /**
                                 * calEvent is the event object,so you can access it's properties
                                 */
                                if(confirm("Are you sure you want to delete the event " + calEvent.title + " ?")) {
                                     // deleteTempAvailability(calEvent.start._d,calEvent.end._d);
                                     deleteTempAvailability(calEvent.start._d);
                                    // delete in frontend
                                    $('#calendar').fullCalendar('removeEvents',calEvent._id);
                                }
                        },editable: false,eventLimit: true,// allow "more" link when too many events
        });


                },failure: function(err)
                {
                    alert("error == "+err);

                }
    });

并确保用户每天只能添加一个事件.我所做的就是将SELEctOverlap设置为false.

大佬总结

以上是大佬教程为你收集整理的jquery – fullcalendar月视图中单日的单个事件全部内容,希望文章能够帮你解决jquery – fullcalendar月视图中单日的单个事件所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。