p:今天的日历按钮
Posted
技术标签:
【中文标题】p:今天的日历按钮【英文标题】:p:calendar today button 【发布时间】:2012-02-13 02:31:17 【问题描述】:我正在使用 PF RC1,JSF 2.0。
当我点击 p:calendar 的今天按钮时,默认情况下它会突出显示今天的日期,但要求是如果我点击“今天”按钮,我应该在相应的文本字段中获得突出显示的日期(今天的日期) .
这似乎在展示柜中也不起作用。 http://www.primefaces.org/showcase-labs/ui/calendarButtonPanel.jsf
是否可以在今天按钮上编写自定义代码或使今天按钮按上述说明工作。
谢谢。
【问题讨论】:
【参考方案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 这也可能会影响执行此操作的能力。
我知道这不是一个明确的答案,但这是一个难题,我希望这能给你一些见解。
【讨论】:
见:***.com/questions/1073410/… @CagatayCivici 总结一下!感谢您找到此链接。【参考方案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)如下:
【讨论】:
以上是关于p:今天的日历按钮的主要内容,如果未能解决你的问题,请参考以下文章
日历不是从今天开始 jqueryui daterangepicker