3

私がしようとしていること

リンクをクリックするとポップアップが表示され、イベントを示すカレンダーが表示されるイベント管理サイトを実装しようとしています。ここでは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">&#215;</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'
    });

}
4

1 に答える 1