我有其中一些字段需要被禁用被点击复选框直到一种形式。对于JSF元素都工作正常。该问题是与primeface元件。

有关像下拉列表中JSF的元件I做这样的:

<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的调用平变化事件:

 jQuery('.countryCheckBoxId').change(function()
 {
    enableCountryFilter();
 });

通过在萤火调查Primefaces元件I可以看到,ID“日期选择”仅作为“跨度” id和实际的ID为HTML inputfield是“datePicker_input”。因此,通过不使用“日期选择器”中的JavaScript的ID我试图用“datePicker_input”。这使得该领域,但jQuery的事件带来了实际的压光机无法正常工作。

它也似乎在于砑光通过一个jquery事件调用。在此jQuery的事件中,你可以看到禁用默认设置为true。我认为这是问题,我不能设置部分为假。

有帮助吗?

解决方案 2

由于当按下文本字段我尝试以下日历称为:

- 设置压延禁用变量为假。结果 - 设置日历为true输入文本字段禁用属性。点击 -on变化,则文本字段disabled属性设置为false。

在这种方式中,日历残疾人属性始终设置为false(这意味着它是永远不会被禁用),我只文本字段设置为JavaScript代码禁用渲染。通过这种方式,你可以不触发日历和只禁止进入文本字段和变化,我再次启用文本字段。

其他提示

我能想到的最好的是使服务器上的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>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top