2013-02-20 12 views
17

Проблема заключается в том, как отключить выбор по ПАСПОРТНЫМ ДАТАМ в полноэкранном режиме месяца/недели.Как сделать прошедшую дату недоступной в fullcalendar?

Я хочу, чтобы пользователям не разрешалось нажимать/выбирать последние даты.

enter image description here

Вот некоторые Googled фрагмент кода я пытаюсь реализовать на мероприятии, оказывающего:

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

Но ее не работает, хотя.

Я тоже попробовал CSS CSS, и это поможет мне скрыть только текст даты, но selectable по-прежнему работает над box.

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

Я действительно застрял в этой проблеме. Пожалуйста, помогите мне. Благодаря ...

ответ

23

Я сделал это в своем полном календаре, и он отлично работает.

Вы можете добавить этот код в свою избранную функцию.

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

Я надеюсь, что это вам поможет.

+0

Привет, Приятель, вы сделали мой день. Большое спасибо ... – Frank

+1

Здесь я использую это. Благодарю. assignzilla.com/wordpress-google/?page_id=8 – Frank

+0

Его все в порядке Фрэнк .. Добро пожаловать .. – Mausami

4

Вы можете комбинировать:

-hide текст с помощью CSS, как упомянуто в вопросе

- disable PREV button on current month

Дата -check на dayClick/eventDrop и т.д.:

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

Большое спасибо @Lukasz Koziara – Frank

1

ниже решение, я использую в настоящее время:

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

Мне нравится этот подход:

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

Это будет по существу отключить выбор на раз, прежде чем «сейчас».

Unselect method

+3

Это, безусловно, лучший подход, чем выбранный ответ. Просто нужно добавить это для eventDrop, и мне хорошо идти :) –

1

Благодаря this answer, я нашел решение ниже:

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

Нет необходимости в долгосрочной программе, просто попробуйте это.

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

Дает нам текущую дату.

Смежные вопросы