2016-11-18 2 views
0

Я работаю с fullcalendar и задаюсь вопросом, есть ли способ сделать определенные даты незаметными. Функция, которую я до сих пор сравнивает со всеми датами «квадратов дня» в календаре с максимальной датой, которую я определил ранее. Если дата выходит за пределы максимальной даты, я добавляю класс для их серого. Они по-прежнему доступны для просмотра. Скрывать их винтами с макетом календаря и выглядит ужасно.FullCalendar - Сделать дату не нажата

  // Grey out the dates that go beyond the maximum availability date 
      var maxParsed = Date.parse(maxDate.toString()); 
      $("td[data-date]").each(function(){ 
       var date = $(this).data('date'); 
       var dateParsed = Date.parse(date); 
       if(!isNaN(dateParsed) && dateParsed > maxParsed){ 
        $(this).addClass('fc-other-month'); 
       } 
      }); 

ответ

0

Возьмите помощь JQuery и return false на click событие (я предполагаю, что вы назначили его другой класс) на дату вы не хотите, чтобы быть нажата. Поэтому они не действуют по клику ...

1

С помощью css только вы можете справиться с этим, я думаю. На вашем CSS сделать это:

.fc-other-month { 
    pointer-events: none; 
    cursor: default; 
} 

CSS свойство указатель событий позволяет авторам контролировать при каких обстоятельствах (если таковые имеются) определенный графический элемент может стать объектом событий мыши. Когда это свойство не указано, те же значения значения visiblePainted применяются к содержимому SVG.

Вы можете узнать больше об этом здесь: https://developer.mozilla.org/en/docs/Web/CSS/pointer-events

Если он не работает, возможно, предотвратить дефолт может сделать трюк.

$('.fc-other-month').on('click', function(e) { 
    e.preventDefault(); 
    $(this).css({'pointer-events' : 'none'}); 
}); 

=== ==== редактировать

Я посмотрел в документации, они имеют eventClick. Вы можете внутри этой функции проверить, является ли это «хорошей датой» или нет, а затем вернуть значение false, если вы не хотите, чтобы он был доступен для клика.

$('#calendar').fullCalendar({ 
    eventClick: function(calEvent, jsEvent, view) { 

     if (1==1 || "this is a day without click feature") { //dummy code 
      return false; //prevent clickable function 
     } 

    } 
}); 

https://fullcalendar.io/docs/mouse/eventClick/

+0

Это не сработало. Я даже попытался удалить все классы с дневного квадрата (насколько я могу сказать, они просто контролировали цвет/положение и т. Д.) И вызывая .unbind(), чтобы отменить все события. По-прежнему доступны .. – sdg91

+0

Вы уверены? Я добавил непосредственно на демонстрационный (devtools) «указатель-события: нет», и числа перестали быть интерактивными. Я также заставил js добавить этот css. попробуйте еще раз –

+0

Я уверен. Тем не менее, я дал вам голосование. – sdg91

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