2013-05-15 73 views
2

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

使用Hieu的答案,確保您禁用的日期前面沒有前導零(例如'03/03/2013'應該是'3/3/2013')。

回答

7

第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日期選擇器的beforeShowDay屬性

<p:calendar id="pfdate" navigator="true" pattern="MM-dd-yyyy" 
     value="#{day}" beforeShowDay="disableAllTheseDays" showOn="button"/> 
+0

謝謝,這應該工作。但是,是否可以將這些禁用日期動態地導入到javascript函數中?我將從數據庫中檢索它們。 –

+1

這是可能的,Apoorv。你可以使用JSF EL加載dynamicdays –

+0

謝謝Hieu。我會替換第一行,'var disabledDays =#{bean.randomDateList}'? Perissf,我如何在這種情況下使用自定義驗證器或Ajax事件處理程序? –

0

禁用所有星期五天,我已經使用了在p:calendar上的beforeDown屬性之前,代碼如下解釋:

<p:calendar ..... mask="true" locale="fr" beforeShowDay="fridaysDisabled" .... required="true" maxdate="new Date();"/> 

AND JavaScript功能:

function fridaysDisabled(date) 
{ 
    var day = date.getDay(); 
    return [day != 5, ''] 
}