seleccionar rango posteriores poner para fechas fecha calendario bloquear jquery date fullcalendar

jquery - rango - ¿Cómo hacer que la fecha pasada no sea seleccionable en el calendario completo?



datepicker rango de fechas (13)

A continuación se muestra la solución que estoy usando ahora:

select: function(start, end, jsEvent, view) { if (moment().diff(start, ''days'') > 0) { $(''#calendar'').fullCalendar(''unselect''); // or display some sort of alert return false; }

El problema es cómo deshabilitar la selección en FECHAS ANTERIORES en la vista mes / semana del calendario completo.

Quiero que el usuario no tenga permiso para hacer clic / seleccionar las fechas pasadas.

Aquí hay un fragmento de código en Google que estoy intentando implementar en la representación de eventos:

selectable: true, selectHelper: false, select: function(start, end, allDay) { var appdate = jQuery.datepicker.formatDate(''<?php echo $DPFormat; ?>'', new Date(start)); jQuery(''#appdate'').val(appdate); jQuery(''#AppFirstModal'').show(); }, eventRender: function(event, element, view) { var view = ''month'' ; if(event.start.getMonth() !== view.start.getMonth()) { return false; } },

Pero no está funcionando sin embargo.

Intenté también debajo de CSS y esto me ayudó a ocultar solo el texto de la fecha pasada, pero seleccionable todavía está trabajando en el cuadro de fecha pasada.

.fc-other-month .fc-day-number { display:none; }

Estoy realmente atascado con este problema. Por favor que alguien me ayude. Gracias...


En FullCalendar v3.0, existe la propiedad selectAllow :

selectAllow: function(info) { if (info.start.isBefore(moment())) return false; return true; }


En Fullcalendar lo logré con el evento dayClick. Pensé que es la forma más sencilla de hacerlo.

Aquí está mi código ...

dayClick: function (date, cell) { var current_date = moment().format(''YYYY-MM-DD'') // date.format() returns selected date from fullcalendar if(current_date <= date.format()) { //your code } }

Espero que ayude a que las fechas pasadas y futuras sean inelegibles.


En fullcalendar 3.9, es posible que prefiera el validRange function parameter :

validRange: function(nowDate){ return {start: nowDate} //to prevent anterior dates },

Inconveniente: esto también oculta eventos antes de esa fecha y hora.


Esto es lo que estoy usando actualmente

También se agregó la función .add () para que el usuario no pueda agregar un evento a la misma hora

select: function(start, end, jsEvent, view) { if(end.isBefore(moment().add(1,''hour'').format())) { $(''#calendar'').fullCalendar(''unselect''); return false; }


Gracias a esta respuesta , he encontrado la siguiente solución:

$(''#full-calendar'').fullCalendar({ selectable: true, selectConstraint: { start: $.fullCalendar.moment().subtract(1, ''days''), end: $.fullCalendar.moment().startOf(''month'').add(1, ''month'') } });


He estado usando la opción validRange .

validRange: { start: Date.now(), end: Date.now() + (7776000) // sets end dynamically to 90 days after now (86400*90) }


He intentado este enfoque, funciona bien.

$(''#calendar'').fullCalendar({ defaultView: ''month'', selectable: true, selectAllow: function(select) { return moment().diff(select.start) <= 0 } })

¡Disfrutar!


Lo he hecho en mi calendario completo y está funcionando perfectamente.

Puede agregar este código en su función de selección.

select: function(start, end, allDay) { var check = $.fullCalendar.formatDate(start,''yyyy-MM-dd''); var today = $.fullCalendar.formatDate(new Date(),''yyyy-MM-dd''); if(check < today) { // Previous Day. show message if you want otherwise do nothing. // So it will be unselectable } else { // Its a right date // Do something } },

Espero que te ayude.


Me gusta este enfoque:

select: function(start, end) { if(start.isBefore(moment())) { $(''#calendar'').fullCalendar(''unselect''); return false; } }

Básicamente, deshabilitará la selección en los tiempos anteriores al "ahora".

Deseleccionar método


No necesitas un programa largo, solo prueba esto.

checkout.setMinSelectableDate(Calendar.getInstance().getTime()); Calendar.getInstance().getTime()

Nos da la fecha actual.


Puedes combinar:

-cubrir texto por CSS como se menciona en la pregunta

- Desactivar el botón PREV en el mes actual

-controlar la fecha en dayClick / eventDrop etc:

dayClick: function(date, allDay, jsEvent, view) { var now = new Date(); if (date.setHours(0,0,0,0) < now.setHours(0,0,0,0)){ alert(''test''); } else{ //do something } }


Puedes usar esto

var start_date= $.fullCalendar.formatDate(start,''YYYY-MM-DD''); var today_date = moment().format(''YYYY-MM-DD''); if(check < today) { alert("Back date event not allowed "); $(''#calendar'').fullCalendar(''unselect''); return false }