在 JQuery 中获取 richfaces 日历的选定日期
get selected date of richfaces calendar in JQuery
我有两个相同形式的日历,都是 rich:calendar
。一个是开始日期(或激活日期),另一个是结束日期(或停用日期)。
我想要实现的是在结束日期日历中标记选定的开始日期。
例如:
这里的 7 月 14 日(红色)是开始日期,7 月 16 日是当前选择的结束日期。
我的问题似乎是,我无法通过 JQuery 获取 开始日期 的值。我尝试了 "hiding" 页面某处的值,因此我可以使用 $('#myForm\:hiddenActivationDate').val();
访问它并且它几乎可以工作..但是其他一切都停止工作了。
这些是我写的脚本函数:
var currentDate = new Date();
function activationDateDisablementFunction(day) {
return currentDate.getDate() <= day.date.getDate();
}
function activationDateClassProv(day) {
if (currentDate.getDate() > day.date.getDate()) {
return "disabledDay";
}
}
function deactivationDateDisablementFunction(day) {
var hiddenActivationDate = $('#myForm\:hiddenActivationDate').val();
var activationDate = new Date(Date.parse(hiddenActivationDate));
return day.date.getDate() >= activationDate.getDate(); // true = enabled, false =disabled
}
function deactivationDateClassProv(day) {
var hiddenActivationDate = $('#myForm\:hiddenActivationDate').val();
var activationDate = new Date(Date.parse(hiddenActivationDate));
if (day.date.getDate() < activationDate.getDate()) {
return "disabledDay";
}
if (day.date.getDate() === activationDate.getDate()) {
return "activatedDay";
}
}
这里是两个日历:
<!-- start date -->
<a4j:outputPanel id="activationDateCalendar" layout="block" >
<rich:calendar value="#{myBean.activationDate}"
popup="true"
datePattern="#{myBean.dateFormat}"
boundaryDatesMode="scroll"
jointPoint="bottomAuto"
showWeeksBar="false"
showApplyButton="false"
dayClassFunction="activationDateClassProv"
dayDisableFunction="activationDateDisablementFunction"
style="width:320px">
<a4j:ajax render="@this, hiddenActivationDate, deactivationDateCalendar, activationDatePreview, deactivationDatePreview, durationPreview" />
</rich:calendar>
</a4j:outputPanel>
<!-- my hidden date -->
<h:inputHidden id="hiddenActivationDate" value="#{myBean.activationDate}" />
<!-- end date -->
<a4j:outputPanel id="deactivationDateCalendar" layout="block" >
<rich:calendar value="#{myBean.deactivationDate}"
popup="true"
datePattern="#{myBean.dateFormat}"
boundaryDatesMode="scroll"
jointPoint="bottomAuto"
showWeeksBar="false"
showApplyButton="false"
dayClassFunction="activationDateClassProv"
dayDisableFunction="activationDateDisablementFunction"
style="width:320px">
<a4j:ajax render="@this, activationDatePreview, deactivationDatePreview, durationPreview" />
</rich:calendar>
</a4j:outputPanel>
简而言之
我想要做的是直接从 JQuery 函数 deactivationDateClassProv
中访问 开始日期 值,而不是从隐藏字段中获取它。
这可能吗?或者有 "Richfaces way" ?
RichFaces组件有一个JSAPI,阅读docs.
在您的情况下,您只需通过以下方式访问日期:
function deactivationDateClassProv(day) {
var hiddenActivationDate = #{rich:component('firstCalendarId')}.getValue();
…
}
请注意,该函数仅在需要时调用,如果您只是关闭并打开日历,它将不会再次调用(除非您切换月份或将 isRendered
设置为 false)。
我有两个相同形式的日历,都是 rich:calendar
。一个是开始日期(或激活日期),另一个是结束日期(或停用日期)。
我想要实现的是在结束日期日历中标记选定的开始日期。
例如:
这里的 7 月 14 日(红色)是开始日期,7 月 16 日是当前选择的结束日期。
我的问题似乎是,我无法通过 JQuery 获取 开始日期 的值。我尝试了 "hiding" 页面某处的值,因此我可以使用 $('#myForm\:hiddenActivationDate').val();
访问它并且它几乎可以工作..但是其他一切都停止工作了。
这些是我写的脚本函数:
var currentDate = new Date();
function activationDateDisablementFunction(day) {
return currentDate.getDate() <= day.date.getDate();
}
function activationDateClassProv(day) {
if (currentDate.getDate() > day.date.getDate()) {
return "disabledDay";
}
}
function deactivationDateDisablementFunction(day) {
var hiddenActivationDate = $('#myForm\:hiddenActivationDate').val();
var activationDate = new Date(Date.parse(hiddenActivationDate));
return day.date.getDate() >= activationDate.getDate(); // true = enabled, false =disabled
}
function deactivationDateClassProv(day) {
var hiddenActivationDate = $('#myForm\:hiddenActivationDate').val();
var activationDate = new Date(Date.parse(hiddenActivationDate));
if (day.date.getDate() < activationDate.getDate()) {
return "disabledDay";
}
if (day.date.getDate() === activationDate.getDate()) {
return "activatedDay";
}
}
这里是两个日历:
<!-- start date -->
<a4j:outputPanel id="activationDateCalendar" layout="block" >
<rich:calendar value="#{myBean.activationDate}"
popup="true"
datePattern="#{myBean.dateFormat}"
boundaryDatesMode="scroll"
jointPoint="bottomAuto"
showWeeksBar="false"
showApplyButton="false"
dayClassFunction="activationDateClassProv"
dayDisableFunction="activationDateDisablementFunction"
style="width:320px">
<a4j:ajax render="@this, hiddenActivationDate, deactivationDateCalendar, activationDatePreview, deactivationDatePreview, durationPreview" />
</rich:calendar>
</a4j:outputPanel>
<!-- my hidden date -->
<h:inputHidden id="hiddenActivationDate" value="#{myBean.activationDate}" />
<!-- end date -->
<a4j:outputPanel id="deactivationDateCalendar" layout="block" >
<rich:calendar value="#{myBean.deactivationDate}"
popup="true"
datePattern="#{myBean.dateFormat}"
boundaryDatesMode="scroll"
jointPoint="bottomAuto"
showWeeksBar="false"
showApplyButton="false"
dayClassFunction="activationDateClassProv"
dayDisableFunction="activationDateDisablementFunction"
style="width:320px">
<a4j:ajax render="@this, activationDatePreview, deactivationDatePreview, durationPreview" />
</rich:calendar>
</a4j:outputPanel>
简而言之
我想要做的是直接从 JQuery 函数 deactivationDateClassProv
中访问 开始日期 值,而不是从隐藏字段中获取它。
这可能吗?或者有 "Richfaces way" ?
RichFaces组件有一个JSAPI,阅读docs.
在您的情况下,您只需通过以下方式访问日期:
function deactivationDateClassProv(day) {
var hiddenActivationDate = #{rich:component('firstCalendarId')}.getValue();
…
}
请注意,该函数仅在需要时调用,如果您只是关闭并打开日历,它将不会再次调用(除非您切换月份或将 isRendered
设置为 false)。