Полный календарь: почему календарь появляется дважды на странице? - PullRequest
3 голосов
/ 10 марта 2011

Я использую Fullcalendar для jQuery, и по какой-то причине календарь появляется на странице дважды. Это не вопрос наличия двух экземпляров fullcalendar на одной странице.

Скорее, внизу первого календаря, есть второй идентичный календарь.

Я подтвердил, что на моей странице только один div #calendar, поэтому ошибка как-то связана с моим .js, который вызывает fullcalendar.js, я полагаю.

Любая помощь высоко ценится.

JS код:

jQuery('#calendar').fullCalendar({


        year: jQuery.today.getFullYear(),
        month: jQuery.today.getMonth(),
        date: jQuery.today.getDate(),
        theme: true,
        contentHeight: 1000,
        header: {
            left: 'prev,next today',
            center: 'title',
            right: 'month,agendaWeek,agendaDay'
        },
        defaultView: 'agendaDay',
        dayClick: function(date, allDay, jsEvent, view) {
                           // a lot of custom code
                    }
            });

HTML:

<table><tr><td valign="top" width="700px"><div id="calendar"></div></td></tr></table>

Другой вызов fullcalendar в javascript (это помещает указатель даты в div слева от #calendar div на той же странице):

jQuery('#datepicker_for_calendar').datepicker({
          defaultDate: jQuery.today,
          minDate: jQuery.startDate,
          maxDate: jQuery.endDate,
          inline: true,
          showButtonPanel: true,
          onSelect: function(dateText, inst) {
              var d = new Date(dateText);
              jQuery('#calendar').fullCalendar('gotoDate', d);
              selectedDate = d;
          }
      });

Ответы [ 4 ]

3 голосов
/ 28 марта 2012

Добавить a.html(''); к функции f() в минимизированной версии.
У меня была открыта моя в диалоговом окне, каждый раз, когда я нажимал кнопку, чтобы открыть, был другой календарь.
После небольшого количествачитая, я нашел способ использовать - .fullCalendar('destroy') - таким образом, вам не нужно редактировать плагин.
Теперь, после закрытия диалога и повторного открытия, появляется только один календарь.

2 голосов
/ 13 февраля 2012

Недавно я столкнулся с той же проблемой и попробовал плагин jQuery Once (), который у меня не работал. Однако я повторно загрузил не минимизированный источник и в методе initialRender добавил следующую строку в качестве первой строки метода, и это разрешило мой дублированный метод календаря.

element.html('');

Полагаю, моя проблема возникла из-за того, что я повторно инициализировал календарь в раскрывающемся списке без обновления страницы. Похоже, что код js постоянно добавлял календарь в существующий элемент div без очистки существующего календаря. .

1 голос
/ 19 марта 2011

Хорошо, после долгой недели тестирования на наличие ошибок, я нашел этот плагин jQuery:

Once ()

http://plugins.jquery.com/project/once

После применения к #calendardiv перед .fullcalendar, проблема решена, отображается только один календарь.

Рабочий код:

jQuery('#calendar').once('calendar').fullCalendar({

...})

0 голосов
/ 22 августа 2018

Это должно сделать этот трюк http://api.jquery.com/one.

Так сродни @netefficacy (используя один вместо один раз ):

$('#calendar').one('calendar').fullCalendar({...})

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...