【问题标题】:p:calendar today buttonp:今天的日历按钮
【发布时间】:2012-02-13 02:31:17
【问题描述】:

我正在使用 PF RC1,JSF 2.0。

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

这似乎在展示柜中也不起作用。 http://www.primefaces.org/showcase-labs/ui/calendarButtonPanel.jsf

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

谢谢。

【问题讨论】:

    标签: primefaces


    【解决方案1】:

    基本上,您需要将事件处理程序的 jQuery 绑定到弹出窗口上的 Today 按钮。使用特定的 jQuery UI 类可以很容易地找到这个按钮。

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

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

    一旦你找到了这个 JS 对象,你就可以通过以下参数调用_selectDay 函数...

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

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

    即使这样可以工作,也存在关于选择事件未在 Primefaces 用于其日历组件的日期选择器上触发的现有 jQuery UI 错误。 http://forum.primefaces.org/viewtopic.php?f=3&t=9301 这也可能会影响执行此操作的能力。

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

    【讨论】:

    【解决方案2】:

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

        $.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"。

    【讨论】:

      【解决方案3】:

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

      看起来像这样

      点击按钮时,选择今天的日期(生成selectevent)如下:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-08
        • 1970-01-01
        • 1970-01-01
        • 2016-08-09
        • 2015-06-24
        • 2013-06-05
        相关资源
        最近更新 更多