链接p:安排prev下一个按钮到p:日历,如谷歌日历

时间:2014-06-25 12:34:37

标签: javascript jquery primefaces calendar

当我们点击p:schedule的上一个或下一个导航时,我想移动p:calendar的所选日期(就像谷歌日历一样)。

 <p:calendar mode="inline" navigator="true" id="inlineCal" widgetVar="searchCalVar"
    value="#{bean.miniCalDate}" style="width:200px;">
        <p:ajax event="dateSelect" listener="#{bean.handleDateSelect}" update="calendarselectedvalue accord" />
    </p:calendar>

    <p:schedule id="schedule"  value="#{bean.eventModel}"
    widgetVar="scheduleWidget" draggable="true" resizable="false" allDaySlot="true" slotMinutes="15" firstHour="9" initialDate="#{bean.miniCalDate}"    timeZone="UTC" view="agendaWeek" leftHeaderTemplate="today, ,prev,next" rightHeaderTemplate="agendaDay,agendaWeek,month">
    </p:schedule>

我试过

     $('.fc-button-next').click(function(){
        myFullCal = scheduleWidget.jq.children(":first");
        var view = myFullCal.fullCalendar('getView');
        if(view.name=='agendaDay')
        {
        //  var newDate=myFullCal.fullCalendar('getDate');
           // var newDate=new Date($(PrimeFaces.escapeClientId('accord:calendarselectedvalue')).val());
//      var nextSelectedDate=new Date(newDate.setDate(newDate.getDate()+1));
        //var newMonth= newDate.getMonth()+1;
        //var year = newDate.getFullYear()+"";
        //var newYear=year.substring(2);
        //var nextDate=newDate.getDate()+'/'+newMonth+'/'+newYear;
        cal = searchCalVar.jq.children(":first");
        cal.input.val("27/6/14");
        }
    });

我已经google了解决方案。但一无所获。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

我使用Primefaces 5.2并基于示例Lazy Schedule展示实现了一个解决方案。 http://www.primefaces.org/showcase/ui/data/schedule.xhtml

点击导航按钮prev或next p:schedule, 生成一个调用接收的init()方法的事件 startDate日期和endDate p:日历。 每次单击都会调用具有新日期的方法。

查看示例代码的一部分:

public void init() {         
   ScheduleModel lazyEventModel = new LazyScheduleModel() {             

        public void loadEvents(Date startDate, Date endDate) {
            Date random = getRandomDate(startDate);
            addEvent(new DefaultScheduleEvent("Lazy Event 1", random, random));                 
            random = getRandomDate(endDate);
            addEvent(new DefaultScheduleEvent("Lazy Event 2", random, random));
        }  
    };
}

答案 1 :(得分:0)

好吧,我猜以下代码解决了我的问题。

 $('.fc-button-next').click(function(){
             myFullCal = scheduleWidget.jq.children(":first");
                    var view = myFullCal.fullCalendar('getView');
                    if(view.name=='agendaDay')
                    {
                        var selectedDate=searchCalVar.getDate();
                        searchCalVar.setDate(null);
                        var nextDate=new Date(selectedDate.setDate(selectedDate.getDate()+1));
                        searchCalVar.setDate(nextDate);
                     }
                });

                $('.fc-button-prev').click(function(){
                    myFullCal = scheduleWidget.jq.children(":first");
                    var view = myFullCal.fullCalendar('getView');
                    if(view.name=='agendaDay')
                    {
                        var selectedDate=searchCalVar.getDate();
                        searchCalVar.setDate(null);
                        var nextDate=new Date(selectedDate.setDate(selectedDate.getDate()-1));
                        searchCalVar.setDate(nextDate);
                     }
                });