我想在周末和节假日为c:calendar申请CSS。我正在尝试调用
使用jQuery并根据条件设置的beforeShowDay事件。

<script>
    $(document).ready(function(){
       $(".hasDatepicker").datepicker("option", "beforeShowDay", function (date) {
          //If condition true
          return [true,'holidays'];
          //else
          return [true,''];
       });
    });
</script>

<style>
    .holidays {background-color: wheat;}
</style>

<h:form prependId="false">
      <p:calendar/>
</h:form>


但是事件并没有被解雇。还有其他我想念的东西吗?

最佳答案

您应该使用beforeShowDay属性


beforeShowDay:在显示日期之前执行的回调,用于
自定义日期显示。

使用beforeShowDay javascript回调自定义每个日期的外观。该函数返回一个
具有两个值的数组,第一个是标志,指示是否将日期显示为启用状态,第二个
参数是要添加到日期单元格的可选样式类。以下示例禁用星期二和
星期五。 (PrimeFaces用户指南第50页)


<p:calendar value="#{dateBean.date}" beforeShowDay="tuesdaysAndFridaysDisabled" />


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




jQuery解决方案

如果要解决此问题而无需修改primefaces元素,而是使用jquery datepicker beforeShowDay属性,请查看本教程Primefaces calendar – highlight dates

09-27 22:08