2016-05-13 22 views
6

Sto lavorando con jQuery fullcalendar (versione 2.7.1).jQuery fullcalendar - eventi

Questo è quello che voglio fare:

enter image description here

ora posso impostare lo sfondo rosso, ma non viene visualizzato il testo. Questo è quello che sto facendo:

var m = moment('2016-09-19'); 

$('#calendar').fullCalendar({ 
    // put your options and callbacks here 
    left: 'title', 
    center: '', 
    right: 'prev,next', 
    weekends: false, 
    weekNumbers: true, 
    defaultView: 'month', 
    defaultDate: m, 
    events: [ 
     { 
      start: '2016-09-19', 
      allDay : true, 
      rendering: 'background', 
      backgroundColor: '#F00', 
      title: 'full', 
      textColor: '#000' 
     }, 
     { 
      start: '2016-09-20', 
      allDay : true, 
      rendering: 'background', 
      backgroundColor: '#F00', 
      title: 'full', 
      textColor: '#000' 
     } 
    ] 
}); 

Questo è come appare:

enter image description here

Quindi il testo non viene aggiunta .... E il colore è molto più leggero del colore specificato.

Come potete vedere, non ho aggiunto "oggi" al mio navigazione destra ma è stato aggiunto comunque ....

Mi chiedo anche come posso limitare la navigazione di mesi. Per esempio, solo loro possono selezionare mesi settembre, ottobre, novembre 2016 ...

Qualcuno può aiutarmi con queste domande?

risposta

6

È possibile utilizzare eventAfterRender richiamata. In questo callback, aggiungere la stringa FULL al parametro element. È possibile applicare lo stile CSS a questo utilizzando la classe event-full.

Il background-color è più leggero perché c'è un'opacità di 0.3; cambiarlo in 1 utilizzando la classe event-full.

Per nascondere il pulsante today è necessario impostare le proprietà left, center, right nell'oggetto header.

Per limitare la navigazione di mesi è possibile utilizzare il callback viewRender.

JS

var m = moment('2016-09-19'); 

$('#calendar').fullCalendar({ 
    // put your options and callbacks here 
    header: { 
     left: 'title', 
     center: '', 
     right: 'prev,next' 
    }, 
    weekends: false, 
    weekNumbers: true, 
    defaultView: 'month', 
    defaultDate: m, 
    events: [{ 
     start: '2016-09-19', 
     allDay: true, 
     rendering: 'background', 
     backgroundColor: '#F00', 
     title: 'full', 
     textColor: '#000', 
     className: 'event-full' 
    }, { 
     start: '2016-09-20', 
     allDay: true, 
     rendering: 'background', 
     backgroundColor: '#F00', 
     title: 'full', 
     textColor: '#000', 
     className: 'event-full' 
    }], 
    eventAfterRender: function (event, element, view) { 
     element.append('FULL'); 
    }, 
    viewRender: function (view, element) { 
     var start = new Date("2016-09-01"); 
     var end = new Date("2016-11-30"); 

     if (end < view.end) { 
      $("#calendar .fc-next-button").hide(); 
      return false; 
     } else { 
      $("#calendar .fc-next-button").show(); 
     } 

     if (view.start < start) { 
      $("#calendar .fc-prev-button").hide(); 
      return false; 
     } else { 
      $("#calendar .fc-prev-button").show(); 
     } 
    } 
}); 

CSS

.event-full { 
    color: #fff; 
    vertical-align: middle !important; 
    text-align: center; 
    opacity: 1; 
} 

WORKING DEMO

1

Sto utilizzando una soluzione basata su CSS poiché in questo caso sembra più semplice consentire alla libreria di fare ciò che è destinato a fare e aggirarla. Il pulsante "Oggi" ha una classe specifica, quindi visualizzerei: nessuno. Gli oggetti Event possono accettare un puntello className. Usando questo, ho posizionato a: before element per creare il testo "FULL". Infine, la variazione di colore è dovuta a un'opacità di 0,3 su quelle celle. Impostando su 1 mostra il colore di sfondo rosso completo che viene applicato. \

.fc-today-button { 
    display: none; 
} 
.event-full { 
    position: relative; 
    opacity: 1; 
    &:before { 
     content: "FULL"; 
     position: absolute; 
     color: #fff; 
     top: 50%; 
     transform: translateY(-50%) translateX(-50%); 
     left: 50%; 
    } 
} 

e il JS:

var m = moment('2016-09-19'); 

$('#calendar').fullCalendar({ 
    // put your options and callbacks here 
    left: 'title', 
    center: '', 
    right: 'prev,next', 
    weekends: false, 
    weekNumbers: true, 
    defaultView: 'month', 
    defaultDate: m, 
    events: [ 
     { 
      start: '2016-09-19', 
      allDay : true, 
      rendering: 'background', 
      backgroundColor: '#F00', 
      title: 'full', 
      textColor: '#000', 
         className: 'event-full' 
     }, 
     { 
      start: '2016-09-20', 
      allDay : true, 
      rendering: 'background', 
      backgroundColor: '#F00', 
      title: 'full', 
      textColor: '#000', 
         className: 'event-full' 
     } 
    ] 
}); 

http://codepen.io/amishstripclub/pen/zqQqxx

+0

dubito questa roba CSS3 funziona su browser più vecchi. Ti raccomando di farlo con il modo jquery. –

+0

Se ci si riferisce alle proprietà di trasformazione utilizzate per il centraggio, ci sono alternative a quelle. Sono solo i più facili per me, ad esempio. –

1

vorrei utilizzare l'attributo disabled invece di mostrare e Hidding pulsanti:

https://jsfiddle.net/uz0mx059/

viewRender: function(view, element) { 
    var start = new Date("2016-09-01"); 
    var end = new Date("2016-11-30"); 

    if (end < view.end) { 
     $("#calendar .fc-next-button").attr('disabled',true); 
     return false; 
    } else { 
     $("#calendar .fc-next-button").attr('disabled',false); 
    } 

    if (view.start < start) { 
     $("#calendar .fc-prev-button").attr('disabled',true); 
     return false; 
    } else { 
     $("#calendar .fc-prev-button").attr('disabled',false); 
    } 
    } 

Più un po 'di CSS:

button:disabled { 
    color: grey; 
} 
Problemi correlati