私がしようとしていること
リンクをクリックするとポップアップが表示され、イベントを示すカレンダーが表示されるイベント管理サイトを実装しようとしています。ここではjqueryの週カレンダーを使用しています。
要件
ここで私が直面している問題は、最初にカレンダーが正常に機能するときにリンクがクリックされたときです。しかし、ページを更新せずにもう一度クリックすると、カレンダーが表示されません。私が調べたとき、それはエラーを示しています
TypeError: options.shortDays is undefined
...options.useShortDayNames ? options.shortDays[date.getDay()] : options.longDays[d...
でjquery.weekcalendar.js (line 3098)
。
この問題を解決するにはどうすればよいですか?
カレンダーは、ページの読み込み後の初回のみ機能します。
脚本
<a href="#" data-reveal-id="reveal_popup" onclick="calendarpop('MT','1');" data-closeonbackgroundclick="false" data-dismissmodalclass="close-reveal-modal">due_today</a>
<div id="reveal_popup" class="reveal-modal">
<div id="calendar_popup"></div>
<a class="close-reveal-modal">×</a>
</div>
function calendarpop(cat,typ) {
if(typ == 1){
var days = 1;
}
else if(typ==2){
var days = 2;
}
else if(typ==3){
var days = 7;
}
var $calendar = $('#calendar_popup').weekCalendar({
timeslotsPerHour: 4,
scrollToHourMillis : 0,
height: function($calendar){
return $(window).height() - $('h1').outerHeight(true);
},
eventRender : function(calEvent, $event) {
if (calEvent.end.getTime() < new Date().getTime()) {
$event.css('backgroundColor', '#aaa');
$event.find('.wc-time').css({
backgroundColor: '#999',
border:'1px solid #888'
});
}
},
data : function(start, end, callback) {
$.getJSON(
site_url()+'/event/eventpop/'+cat+'/'+typ,
'',
function(result) {
callback(result);
}
);
},
allowCalEventOverlap : true,
overlapEventsSeparate: true,
showAsSeparateUser: false,
displayOddEven: true,
displayFreeBusys: true,
daysToShow: days,
buttons: false,
headerSeparator: ' ',
useShortDayNames: true,
firstDayOfWeek: $.datepicker.firstDay,
shortDays: $.datepicker.dayNamesShort,
longDays: $.datepicker.dayNames,
shortMonths: $.datepicker.monthNamesShort,
longMonths: $.datepicker.monthNames,
businessHours :{
start: 6,
end: 22,
limitDisplay: true
},
dateFormat: 'd F Y'
});
}