使用JavaScript访问PrimeFaces日历的禁用属性
作者:互联网
我有一个表单,其中的某些字段需要禁用,直到单击复选框.对于JSF元素,一切正常.问题在于素数元素.
对于像下拉列表这样的JSF元素,我这样做是这样的:
<h:selectOneMenu value="countryValue" disabled="true" id="countryId">
<f:selectItems value="countries" />
</h:selectOneMenu>
对于Primefaces元素,如下所示的压延机:
<p:calendar disabled="true" id="datePicker" value="dateValue"
pattern="yyyy-MM-dd" startWeekday="1"
timeZone="GMT">
</p:calendar>
我用来在事件上启用这些元素的JavaScript很简单:
function enableLocationUpdateFilter()
{
document.getElementById('form:datePicker').disabled = false;
}
jQuery调用onchange-event:
jQuery('.countryCheckBoxId').change(function()
{
enableCountryFilter();
});
通过研究Firebug中的Primefaces元素,我可以看到ID“ datePicker”仅充当“ span” ID,而HTML输入字段的实际ID为“ datePicker_input”.因此,通过在JavaScript中使用“ datePicker”作为ID,我尝试使用“ datePicker_input”.这将启用该字段,但是引发实际日历的jQuery事件不起作用.
看来日历是通过jquery-event调用的.在此jquery-event中,您可以看到默认禁用设置为true.我认为这就是问题所在,我不能将该部分设置为false.
解决方法:
我能想到的最好的办法是在服务器上进行Ajax调用,然后重新渲染日历.您能告诉我们是什么触发了这个jQuery-onchange事件吗?
我假设您正在使用JSF 2.0,对吗?
更新:
因此,您想在单击复选框时启用p:calendar.与此类似的东西应该起作用:
<h:selectBooleanCheckbox id="countryCheckBoxId" value="#{bean.countryBoolean}">
<f:ajax render="datePicker"/>
</h:selectBooleanCheckbox>
<p:calendar disabled="#{!bean.countryBoolean}" id="datePicker" value="dateValue"
pattern="yyyy-MM-dd" startWeekday="1" timeZone="GMT">
</p:calendar>
标签:jsf,primefaces,javascript 来源: https://codeday.me/bug/20191105/1997709.html