2013-02-20 14 views
17

Problem polega na tym, w jaki sposób wyłączyć możliwość wybrania w dniu PAST DATES w widoku miesięcznym/tygodniowym programu fullcalendar.Jak zmienić datę przeszłą w fullcalendar?

Chcę, aby użytkownik nie mógł klikać/wybierać poprzednich dat.

enter image description here

Oto fragment kodu Googled Staram się realizować na razie wykończeniową:

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; } 
    }, 

Ale to nie działa choć.

Próbowałem również CSS również i to pomoże mi ukryć tylko tekst daty przeszłej, ale do wyboru nadal działa na polu pastdate.

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

Naprawdę utknąłem z tym problemem. Proszę, pomóż mi. Dzięki ...

Odpowiedz

23

Zrobiłem to w moim pełnym kalendarze i działa idealnie.

możesz dodać ten kod do swojej funkcji wyboru.

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 
    } 
    }, 

Mam nadzieję, że ci to pomoże.

+0

Cześć Mate, zrobiłeś mój dzień. Wielkie dzięki ... – Frank

+1

Używam tego. Dzięki. appointzilla.com/wordpress-google/?page_id=8 – Frank

+0

Wszystko w porządku Frank .. Witaj. – Mausami

4

można połączyć:

-hide tekst przez CSS, o którym mowa w pytaniu

- disable PREV button on current month

data -Check na 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 
    } 
} 
+0

Wielkie dzięki @ Lucu Koziara – Frank

1

poniżej jest rozwiązaniem używam teraz:

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

Lubię to podejście:

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

Będzie zasadniczo wyłącza wybór na czasy przed „teraz”.

Unselect method

+3

To zdecydowanie lepsze podejście niż wybrana odpowiedź. Wystarczy dodać to do eventDrop i dobrze mi pójść :) –

1

Dzięki this answer, Znalazłem rozwiązanie poniżej:

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

Nie potrzeba długiego programu, po prostu spróbować.

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

Podaje nam aktualną datę.