编程语言
首页 > 编程语言> > 使用JavaScript访问PrimeFaces日历的禁用属性

使用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