p:今日历按钮

时间:2012-01-18 11:03:33

标签: primefaces

我正在使用PF RC1,JSF 2.0。

当我点击p:calendar的今天按钮时,默认情况下会突出显示今天的日期,但要求是如果我点击“今天”按钮我应该在相应的文本字段中获得突出显示的日期(今天的日期)

这似乎也不适用于展示案例。 http://www.primefaces.org/showcase-labs/ui/calendarButtonPanel.jsf

是否可以在今天按钮上编写自定义代码,或者按照上面的说明使今天按钮工作。

感谢。

3 个答案:

答案 0 :(得分:2)

基本上你需要在弹出窗口中对今天按钮执行事件处理程序的jQuery绑定。使用特定的jQuery UI类可以很容易地找到此按钮。

jQuery('.ui-datepicker-current').bind('click', function() { ... });

问题出现在click事件的处理程序中,因为您需要以某种方式从弹出窗口中触发select事件,并且这样做有一些挑战。我遇到的第一个问题是,Datepicker javascript对象似乎没有一个有意义或可预测的ID,我找不到它。我确信有一种方法我还没有看到它。

找到这个JS对象后,可以通过以下参数调用_selectDay函数...

Datepicker._selectDay('#cal_input',0,2012, this);

其中cal_input是日历组件文本字段的id,我假设的第二个和第三个参数分别是月份和年份,那么我假设的第四个参数是Datepicker本身。

即使这样做,也存在关于选项事件的jQuery UI错误,这些错误没有在Primefaces用于其Calendar组件的datepicker上触发。 http://forum.primefaces.org/viewtopic.php?f=3&t=9301这可能会影响执行此操作的能力。

我知道这不是一个明确的答案,但这是一个难题,我希望这会给你一些见解。

答案 1 :(得分:0)

使用PrimeFaces 5.2,您只需将showButtonPanel="true"添加到p:calendar - 代码

看起来像这样

datepicker with buttonpanel

单击按钮时,选择今天的日期(生成选择),如下所示:

todays date

答案 2 :(得分:0)

尝试在页面中包含以下代码:

    $.datepicker._gotoToday = function( id ) {
        var date,
            target = $( id ),
            inst = this._getInst( target[ 0 ] );

        if ( this._get( inst, "gotoCurrent" ) && inst.currentDay ) {
            inst.selectedDay = inst.currentDay;
            inst.drawMonth = inst.selectedMonth = inst.currentMonth;
            inst.drawYear = inst.selectedYear = inst.currentYear;
        } else {
            date = new Date();
            inst.selectedDay = date.getDate();
            inst.drawMonth = inst.selectedMonth = date.getMonth();
            inst.drawYear = inst.selectedYear = date.getFullYear();
        }
        this._notifyChange( inst );
        this._setDateDatepicker(target, date);
        this._selectDate(id, this._getDateDatepicker(target));
        this._adjustDate( target );
    }

这对我来说很好。

或在p:calendar标签中使用mask =“ false”。