Bootstrap 在fullcalendar弹出不被解雇

wxclj1h5  于 2023-11-15  发布在  Bootstrap
关注(0)|答案(3)|浏览(156)

我必须打开一个弹出窗口时,事件被点击,如果你点击任何地方以外,它应该被解雇,所以我使用的焦点触发弹出窗口,它是不会被解雇时,我点击事件之外
下面是我使用的js代码

$(document).ready(function () {

// page is now ready, initialize the calendar...
var eventsArray = [ {
    title: 'Test2',
    start: new Date("2015-04-21")
}];

$('#calendar').fullCalendar({
    // put your options and callbacks here
    header: {
        left: '', //today',
        center: 'title',
        right: ''
    },
    defaultView: 'agendaDay',
    defaultDate: '2015-04-21',
    editable: true,
    allDaySlot: false,
    selectable: true,
    events: eventsArray,
    eventClick: function(calEvent, jsEvent, view) {
       $(this).popover({
        placement : 'bottom',
        title : 'Appointment Actions',
        html : true,
        content :"test",
        trigger : 'focus'

    }).popover('show');
        $(this).attr('tabindex', -1);
    }

});

});

字符串
以下是js fiddle链接:https://jsfiddle.net/kd7e2xpc/2/

von4xj4u

von4xj4u1#

这里的关键是首先要理解如何通过单击外部的任何地方来关闭弹出框,这个解决方案(解释为here)使用以下代码:

$('body').on('click', function (e) {
    $('[data-toggle="popover"]').each(function () {
        //the 'is' for buttons that trigger popups
        //the 'has' for icons within a button that triggers a popup
        if (!$(this).is(e.target) && $(this).has(e.target).length === 0 && $('.popover').has(e.target).length === 0) {
            $(this).popover('hide');
        }
    });
});

字符串
所以你的整个fullcalendar js初始化都很好,只需要注入同样的想法,但要注意calendar事件内部的点击:

$('html').on('click', function(e) {
  $('.popover').each( function() {
    if( $(e.target).parents(".fc-time-grid-event").get(0) !== $(this).prev().get(0) ) {
      $(this).popover('hide');
    }
  });
});


工作溶液here

sd2nnvve

sd2nnvve2#

使用FullCalendar v6和Bootstrap 5:

const calendarEl = document.getElementById('calendar');

const calendar = new FullCalendar.Calendar(calendarEl, {
  // ...

  eventInteractive: true, // make events focusable

  eventClick: function(info) {
    if (info.el == document.activeElement) {
      info.el.blur(); // remove focus if clicked again
    } else {
      info.el.focus(); // otherwise, shift focus
    }
  },

  eventDidMount: function(info) {
    const popover = new bootstrap.Popover(info.el, {
      title: info.event.title,
      // ...
      trigger: 'focus', // hide popover if unfocused
      // ...
    });
  },

  // ...
}

字符串

exdqitrt

exdqitrt3#

如果有人遇到这样的问题..

eventRender: function(eventObj, $el) {
          $(".popover").hide(); },

字符串

相关问题