如何使用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 false
和true
之后,因此我的组件已被完全禁用。
但是,如果它被禁用,它将保持相同的渲染事件。
是手动更改CSS类以匹配禁用状态的唯一方法吗? widgetVar
可以帮助我吗?
nb:我想立即更改组件的方面,所以我不使用JSF disabled
属性,我必须使用JS。
答案 0 :(得分:1)
我回答我自己的问题。
我将简单panelGrid
我的2 selectBooleanCheckbox
放在里面blockUI
并panelGrid
申请<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请求时,无法更改这两个复选框值。
希望这有帮助