2015-06-30 133 views
0

當點擊事件時,我必須打開一個popover,如果你點擊它以外的任何地方,它應該被解僱,所以我使用popover與焦點觸發它不會被解僱,當我點擊事件fullcalender中的popover沒有被解僱

以下是我使用

$(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代碼是JS小提琴鏈接:https://jsfiddle.net/kd7e2xpc/2/

+0

檢查:http://stackoverflow.com/questions/11703093/how-to-dismiss-a-twitter-bootstrap-popover-by-clicking-outside –

+0

@PatrickLC我無法做到這一點你可以編輯擺弄修復? –

+1

應該是https://jsfiddle.net/kd7e2xpc/8/ –

回答

1

這裏的關鍵是首先要了解如何通過點擊以外的任何地方駁回酥料餅,該解決方案(EXPL ained 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初始化是好的,只需要注入相同的想法,但照顧點擊日曆事件中:

$('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