fullcalendar с интерактивным всплывающим окном при наведении курсора

Мне нужно всплывающее окно при наведении полного календаря, например этот.

Пробовали полный календарь с qtip, но не могли открыть всплывающее окно, которое не работает, когда мышь не на месте.

Вот аналогичный пример, но для этого необходимо создать всплывающее окно с возможностью нажатия, как в примере выше.

$(document).ready(function() {

    var date = new Date();
    var d = date.getDate();
    var m = date.getMonth();
    var y = date.getFullYear();

    var events_array = [
        {
            title: 'Test1',
            start: new Date(2012, 8, 20),
            tip: 'Personal tip 1'
        },
        {
            title: 'Test2',
            start: new Date(2012, 8, 21),
            tip: 'Personal tip 2'
        }
    ];

    $('#calendar').fullCalendar({
        header: {
            left: 'prev,next today',
            center: 'title',
            right: 'month,agendaWeek,agendaDay'
        },
        selectable: true,
        events: events_array,
        eventRender: function(event, element) {
            element.attr('title', event.tip);
        }
    });
});

person sunilkjt    schedule 17.03.2014    source источник


Ответы (6)


Используйте плагин всплывающей подсказки Bootstrap http://getbootstrap.com/javascript/#tooltips. А затем внутри обратного вызова eventRender напишите следующее:

 eventRender: function(event, element) {
      $(element).tooltip({title: event.title});             
  }

Это будет работать

введите описание изображения здесь

person prashantsahni    schedule 13.01.2015
comment
Отлично работает, но у меня возникла проблема с представлением «Программа недели», всплывающая подсказка вставляется в столбец - person Vivien; 21.07.2016
comment
Этот ответ не затрагивает важную часть вопроса: не удалось получить всплывающее окно с интерактивным отображением, которое не отображается, когда мышь не отображается. - person Arvind K.; 17.07.2017

проверьте этот пример. http://jsfiddle.net/craga89/N78hs/

eventClick: function(data, event, view) {
            var content = '<h3>'+data.title+'</h3>' + 
                '<p><b>Start:</b> '+data.start+'<br />' + 
                (data.end && '<p><b>End:</b> '+data.end+'</p>' || '');

            tooltip.set({
                'content.text': content
            })
            .reposition(event).show(event);
        }

он работает при нажатии, а не при наведении, но вы также можете адаптировать его для работы при наведении

person nikos.svnk    schedule 17.03.2014
comment
jsfiddle теперь не работает - person MintWelsh; 05.07.2021

вот мой код

    $(document).ready(function() {
    // Setup FullCalendar
// Setup FullCalendar
(function() {
    var date = new Date();
    var d = date.getDate();
    var m = date.getMonth();
    var y = date.getFullYear();

    var tooltip = $('<div/>').qtip({
        id: 'fullcalendar',
        prerender: true,
        content: {
            text: ' ',
            title: {
                button: true
            }
        },
        position: {
            my: 'bottom center',
            at: 'top center',
            target: 'mouse',
            viewport: $('#fullcalendar'),
            adjust: {
                mouse: false,
                scroll: false
            }
        },
        show: false,
        hide: false,
        style: 'qtip-light'
    }).qtip('api');

    $('#fullcalendar').fullCalendar({
        editable: true,
        height: 600,
        header: {
            left: 'title',
            center: '',
            right: 'today prev,next'
        },
        eventMouseover : function(data, event, view) {
            var content = '<h3>'+data.title+'</h3>' + 
                '<p><b>Start:</b> '+data.start+'<br />' + 
                (data.end && '<p><b>End:</b> '+data.end+'</p>' || '');

            tooltip.set({
                'content.text': content
            })
            .reposition(event).show(event);
        },
        dayClick: function() { tooltip.hide() },
        eventResizeStart: function() { tooltip.hide() },
        eventDragStart: function() { tooltip.hide() },
        viewDisplay: function() { tooltip.hide() },
        events: [
            {
                title: 'All Day Event',
                start: new Date(y, m, 1)
            },
            {
                title: 'Long Event',
                start: new Date(y, m, d-5),
                end: new Date(y, m, d-2)
            },
            {
                id: 999,
                title: 'Repeating Event',
                start: new Date(y, m, d+4, 16, 0),
                allDay: false
            },
            {
                title: 'Meeting',
                start: new Date(y, m, d, 10, 30),
                allDay: false
            },
            {
                title: 'Birthday Party',
                start: new Date(y, m, d+1, 19, 0),
                end: new Date(y, m, d+1, 22, 30),
                allDay: false
            }
        ]
    });
}());
    });

</script>
person sunilkjt    schedule 18.03.2014

Я делаю это в Shopify с уже активным jQuery.

Я загрузил плагин bootstrap Tooltip, но на самом деле предпочел использовать плагин popover.

Соединив необходимые файлы начальной загрузки CSS и JS, я получил следующее ниже. Если вы предпочитаете использовать всплывающую подсказку, вы то, что я работал, но я закомментировал это, предпочитая всплывающее окно.

$(document).ready(function() {
 $('#calendar').fullCalendar({
                defaultView: 'month',
                //eventBackgroundColor: 'red',
                //weekends: false,
                eventTextColor: '#FFFFFF',
                hiddenDays: [ 0 ],

        header: {
            left: 'prev,next',
            center: 'title',
            right: 'month,basicWeek,'
        },

//              eventRender: function(event, element) {
//                  $(element).tooltip({title: event.description});             
//              },

        eventRender: function(event, element) {
          $(element).popover({title: event.title, content: event.description, trigger: 'hover', placement: 'auto right', delay: {"hide": 300 }});             
        },

        googleCalendarApiKey: 'XXXXXX',      

        eventSources: [
         {//BEGINNERS ACTING FUN
            googleCalendarId: 'XXXXX',
            color: '#990000',   // an option!
        },
         {//INTERMEDIATES SCENE WORK
            googleCalendarId: 'XXXX',
            color: 'purple',   // an option!  
        },
           {//INTERMEDIATES SCENE WORK
            googleCalendarId: 'XXX',
            color: 'blue',   // an option!  
        },


        {// VOICE & COMMUNICATION SKILLS
            googleCalendarId: 'XXXX',
            color: 'green',   // an option!
        }

        ]

    });

});
person Mr Burble    schedule 20.10.2015
comment
Ты спас мне день, чувак - person Sajin Shereef; 02.05.2019

В версии 4 FullCalendar есть только один аргумент: eventRender: function (info)

так что фрагмент:

eventRender: function (info) {
  $(info.el).tooltip({ title: info.event.title });     
}
person Antonio Santise    schedule 05.09.2019

Обновленный ответ на основе решения @Divyank Sabhaya для работы с v4

eventMouseEnter: function(calEvent) {
var tooltip = '<div class="tooltipevent" style="width:auto;height:20px;vertical-align:middle;background:'+calEvent.el.style.backgroundColor+';position:absolute;z-index:10001;">' + calEvent.event._def.extendedProps.description + '</div>';
$("body").append(tooltip);
$(this.el).mouseover(function(e) {
    $(this.el).css('z-index', 10000);
    $('.tooltipevent').fadeIn('500');
    $('.tooltipevent').fadeTo('10', 1.9);
}).mousemove(function(e) {
    $('.tooltipevent').css('top', e.pageY + 10);
    $('.tooltipevent').css('left', e.pageX + 20);
});},

eventMouseLeave: function(calEvent, jsEvent) {
 $(this.el).css('z-index', 8);
 $('.tooltipevent').remove();},

Лучший

person JDEC    schedule 17.06.2020