3

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

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

4

3 回答 3

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 步:使用beforeShowDayPrimefaces 日期选择器的属性

<p:calendar id="pfdate" navigator="true" pattern="MM-dd-yyyy" 
      value="#{day}" beforeShowDay="disableAllTheseDays" showOn="button"/>
于 2013-05-15T08:13:30.830 回答
1

为了禁用所有星期五,我在 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, '']
}
于 2015-07-29T12:56:05.213 回答
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" />
于 2018-10-26T11:46:37.813 回答