是否可以在PrimeFaces 3.5 <p:calendar>
组件上禁用特定日期(例如:5月15日或6月23日)?有最小值和最大值,但我需要禁用特定日期,例如公共假期使用el表达式,以便我可以使用动态日期。
使用Hieu的答案,确保您禁用的日期前面没有前导零(例如,&#39; 03/03 / 2013&#39;应该是&#39; 3/3/2013&# 39。)
答案 0 :(得分:8)
第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步:使用Primefaces datepicker的beforeShowDay
属性
<p:calendar id="pfdate" navigator="true" pattern="MM-dd-yyyy"
value="#{day}" beforeShowDay="disableAllTheseDays" showOn="button"/>
答案 1 :(得分:1)
要禁用所有星期五的日子,我在p:calendar上使用了beforeShowDay属性,代码beloow解释了这一点:
<p:calendar ..... mask="true" locale="fr" beforeShowDay="fridaysDisabled" .... required="true" maxdate="new Date();"/>
和JavaScript函数:
function fridaysDisabled(date)
{
var day = date.getDay();
return [day != 5, '']
}
答案 2 :(得分:1)
要禁用日期数组,请按照以下步骤操作:
创建一个包含所有日期的字符串对象:
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" />