0

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

我的目标是防止用户在 ajax 请求期间更改一个 selectBooleanCheckbox 的值(这会更改托管 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_inputid 是我的第一个<p:selectBooleanCheckbox />组件的 id。

alert() 函数 dsplayfalse和之后,true所以我的组件被很好地禁用了。

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

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

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

4

1 回答 1

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但我不想看到它,我只想禁用我的 2所以我在运行时使用 JSselectBooleanCheckbox将生成的 id 的值更改为:0

$(window).load(function() {

   $('#j_idt14\\:j_idt23_blocker').css('opacity', 0);

}

就这样。

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

希望这可以帮助

于 2012-12-08T09:26:59.203 回答