我正在使用PF RC1,JSF 2.0。
当我点击p:calendar的今天按钮时,默认情况下会突出显示今天的日期,但要求是如果我点击“今天”按钮我应该在相应的文本字段中获得突出显示的日期(今天的日期)
这似乎也不适用于展示案例。 http://www.primefaces.org/showcase-labs/ui/calendarButtonPanel.jsf
是否可以在今天按钮上编写自定义代码,或者按照上面的说明使今天按钮工作。
感谢。
答案 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)
答案 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”。