使用JavaScript禁用p:selectBooleanCheckbox

时间:2012-12-07 13:16:56

标签: javascript jsf primefaces

如何使用JavaScript禁用<p:selectBooleanCheckbox>组件?

我的目标是阻止用户更改一个selectBooleanCheckbox的值,而另一个在ajax请求时间内更改(更改托管bean中的值)。

我的简化代码:

<p:selectBooleanCheckbox id="..." value="..." widgetVar="abcde">
    <p:ajax listener="..." update="..."/>
</p:selectBooleanCheckbox>

<p:selectBooleanCheckbox id="..." value="...">
    <p:ajax listener="..."  update="..." onstart="alert(document.getElementById('j_idt14:locationChoice2_input').disabled);document.getElementById('j_idt14:locationChoice2_input').disabled=true;alert(document.getElementById('j_idt14:locationChoice2_input').disabled)" />
</p:selectBooleanCheckbox>

j_idt14:locationChoice2_input id是我的第一个<p:selectBooleanCheckbox />组件的ID。

alert()函数dsplay falsetrue之后,因此我的组件已被完全禁用。

但是,如果它被禁用,它将保持相同的渲染事件。

是手动更改CSS类以匹配禁用状态的唯一方法吗? widgetVar可以帮助我吗?

nb:我想立即更改组件的方面,所以我不使用JSF disabled属性,我必须使用JS。

1 个答案:

答案 0 :(得分:1)

我回答我自己的问题。

我将简单panelGrid我的2 selectBooleanCheckbox放在里面blockUIpanelGrid申请<p:blockUI block="panelToBlock" widgetVar="block" /> <h:panelGrid id="panelToBlock"> <p:selectBooleanCheckbox id="..." value="..." widgetVar="abcde"> <p:ajax listener="..." update="..." onstart="block.show()" oncomplete="block.hide()" /> </p:selectBooleanCheckbox> <p:selectBooleanCheckbox id="..." value="..."> <p:ajax listener="..." update="..." onstart="block.show()" oncomplete="block.hide()" /> </p:selectBooleanCheckbox> </h:panelGrid>

blockUI

0.3默认的不透明度值为selectBooleanCheckbox,但我不想看到它,我只是想禁用我的0,所以我更改了生成的id的值使用JS在运行时调用$(window).load(function() { $('#j_idt14\\:j_idt23_blocker').css('opacity', 0); }

{{1}}

就是这样。

现在,当发出ajax请求时,无法更改这两个复选框值。

希望这有帮助