我正在使用primefaces在JSF上工作,当我需要禁用某些日期时,我有一个日历字段,所以我使用了名为beforeShowDay
的属性,但问题是当我使用此属性时日历未打开(不弹出),但当我不使用beforeShowDay
属性时,它正在运行,
我的代码是:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html <!--namespaces-->>
<h:body>
<ui:composition>
<ui:define name="content">
<script type="text/javascript">
function tuesdaysAndFridaysDisabled(date)
{
var day = date.getDay();
return [(day != 2 && day != 5), '']
}
</script>
<h:form>
<p:calendar id="leavefrom" value="#{requestbean.leavefrom}" beforeShowDay="tuesdaysAndFridaysDisabled" effect="drop" pattern="yyyy/dd/MM" required="true" >
<p:ajax update="leaveto" event="dateSelect" />
</p:calendar>
</h:form>
</ui:define>
</ui:composition>
</h:body>
</html>
对此有任何建议..
答案 0 :(得分:1)
return [(day != 2 && day != 5), '']
&
是Facelets中的一个特殊字符,应该会从Facelets编译器中导致错误“The entity name must immediately follow the '&' in the entity reference”。我真的很惊讶你没有得到它。也许你的编辑器正在做一些特别的事情,或者你实际上没有运行问题所示的代码。在浏览器中检查JSF生成的HTML输出应该提供线索。
无论如何,您应该将整个脚本放在<![CDATA[
.. ]]>
块中:
<h:outputScript>
<![CDATA[
function tuesdaysAndFridaysDisabled(date)
{
var day = date.getDay();
return [(day != 2 && day != 5), '']
}
]]>
</h:outputScript>
或者更好的是,将它放在一个独立的JS文件中/resources/functions.js
:
<h:outputScript name="functions.js" />
然后您的代码段开始为我工作。