0

<p:selectBooleanCheckbox>JavaScript を使用してコンポーネントを無効にするにはどうすればよいですか?

私の目標は、ユーザーが 1 つの 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_inputid は、最初の<p:selectBooleanCheckbox />コンポーネントの ID です。

alert() 関数は dsplayfalse以降でtrueあるため、私のコンポーネントは十分に無効になっています。

ただし、無効になっている場合は、同じレンダリング イベントにとどまります。

無効な状態に一致するように CSS クラスを手動で変更する唯一の方法はありますか? 私widgetVarを助けることができますか?

nb: コンポーネントの外観をすぐに変更したいので、JSFdisabled属性を使用せず、JS を使用する必要があります。

4

1 に答える 1

1

私は自分の質問に答えます。

panelGridシンプルなmy 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表示したくありません。2を無効にしたいだけselectBooleanCheckboxなので、生成されたIDの値を0実行時にJSで変更します。

$(window).load(function() {

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

}

それだけです。

ajax リクエストが行われると、これら 2 つのチェックボックスの値は変更できなくなります。

お役に立てれば

于 2012-12-08T09:26:59.203 に答える