禁用p:calendar上的特定日期

时间:2013-05-15 07:49:13

标签: jsf primefaces calendar

是否可以在PrimeFaces 3.5 <p:calendar>组件上禁用特定日期(例如:5月15日或6月23日)?有最小值和最大值,但我需要禁用特定日期,例如公共假期使用el表达式,以便我可以使用动态日期。

使用Hieu的答案,确保您禁用的日期前面没有前导零(例如,&#39; 03/03 / 2013&#39;应该是&#39; 3/3/2013&# 39。)

3 个答案:

答案 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" />