<p:calendar>
是否可以在 PrimeFaces 3.5组件上禁用特定日期(例如:5 月 15 日或 6 月 23 日) ?有最小值和最大值,但我需要使用 el 表达式禁用特定日期,例如公共假期,以便我可以使用动态日期。
使用 Hieu 的答案,确保您禁用的日期前面没有前导零(例如,'03/03/2013' 应该是 '3/3/2013')。
<p:calendar>
是否可以在 PrimeFaces 3.5组件上禁用特定日期(例如:5 月 15 日或 6 月 23 日) ?有最小值和最大值,但我需要使用 el 表达式禁用特定日期,例如公共假期,以便我可以使用动态日期。
使用 Hieu 的答案,确保您禁用的日期前面没有前导零(例如,'03/03/2013' 应该是 '3/3/2013')。
第 1 步:编写一个 javascript 函数来禁用日期列表
var disabledDays = ["5-15-2013", "6-23-2013"];
function disableAllTheseDays(date) {
var m = date.getMonth(), d = date.getDate(), y = date.getFullYear();
for (i = 0; i < disabledDays.length; i++) {
if($.inArray((m+1) + '-' + d + '-' + y,disabledDays) != -1) {
return [false];
}
}
return [true];
}
第 2 步:使用beforeShowDay
Primefaces 日期选择器的属性
<p:calendar id="pfdate" navigator="true" pattern="MM-dd-yyyy"
value="#{day}" beforeShowDay="disableAllTheseDays" showOn="button"/>
为了禁用所有星期五,我在 p:calendar 上使用了 beforeShowDay 属性,下面的代码解释了这一点:
<p:calendar ..... mask="true" locale="fr" beforeShowDay="fridaysDisabled" .... required="true" maxdate="new Date();"/>
和 JavaScript 函数:
function fridaysDisabled(date)
{
var day = date.getDay();
return [day != 5, '']
}
要禁用日期数组,请执行以下步骤:
创建一个包含所有日期的字符串对象:
festivosArray = "[";
for(CalendarioDao dia : festivos){
festivosArray += "'" + dia.getFecha() + "',";
}
festivosArray += "]";
创建一个 JavaScript 函数:
<script type="text/javascript">
function deshabFest(date) {
var disabledDays = #{calendarioView.festivosArray};
var string = jQuery.datepicker.formatDate('dd/mm/yy', date);
return [disabledDays.indexOf(string) == -1, '']
}
</script>
使用beforeshowday
属性调用函数
<p:calendar mode="inline" locale="es" value="#{calendarioView.fechaFestivo}" id="calendarioFestivo" widgetVar="calendarioFestivo" beforeShowDay="deshabFest" />