Как добавить блок даты внешнего элемента на 3 дня с помощью перетаскивания с помощью fullcalender

Я использую http://arshaw.com/fullcalendar/ для создания простого календаря с помощью перетаскивания функциональность, и я надеялся, что кто-нибудь, у кого был опыт его использования, может немного помочь мне с вопросом, который у меня есть.

Чего я пытаюсь добиться, так это создать перетаскиваемый блок, который выделяет набор дней вместо одного дня в календаре. Мой подход к решению этой проблемы заключался в том, чтобы взять день, когда я сбросил блокировку, и подсчитать следующие 3 дня, и установить это как дату окончания.

        //create 3 day block
        var threeDayBlock= date;
        threeDayBlock.setDate(threeDayBlock.getDate() + 2);

Затем добавьте его в календарь следующим образом.

        copiedEventObject.end = threeDayBlock;

Однако это делает то, что как только я переношу его на выбранную дату, вместо этого событие перемещается на 3 дня вперед. Вместо этого я хотел бы, чтобы он ввел трехдневный блок со дня, когда я его сбросил, до 3 дней вперед.

Вот мой код в jsfiddle http://jsfiddle.net/rayshinn/ZTWgD/3/

Я очень ценю любую помощь, которую я могу получить в решении этого вопроса! Спасибо за чтение.


person BaconJuice    schedule 22.07.2013    source источник


Ответы (1)


Происходит следующее: вы создаете ссылку с именем threeDayBlock на объект date. Следовательно, когда вы меняете threeDayBlock, вы также меняете date. Все, что вам нужно сделать, это скопировать объект date вместо ссылки на него:

var threeDayBlock = new Date(date.getTime());

Вот и все!

Посмотрите, как это работает здесь: http://jsfiddle.net/ryleyb/ZTWgD/4/

Кроме того, чтобы понять, как Javascript работает с копируемыми и ссылочными значениями, см. значения-скопированы-по-ссылке/9070366#9070366">здесь.

person Ryley    schedule 22.07.2013
comment
это имеет смысл! Большое спасибо! - person BaconJuice; 22.07.2013