2012-03-11 32 views
3

select(onchangeイベント)で特定の値が選択されている場合、無効にしたいselectOneMenuとtextareaを持つ単純なフォームがあります。どうすればこれを達成できますか?JSF Primefacesのイベントを無効にする

<p:selectOneMenu id="way" value="" onchange=""> 
    <f:selectItem value="0" itemLabel="#{texts.post}" /> 
    <f:selectItem value="1" itemLabel="#{texts.pickup}" /> 
</p:selectOneMenu> 

<h:outputLabel for="address" value="#{texts.address}" /> 
<p:inputTextarea id="address" widgetVar="addressTextarea" value="" /> 

答えて

4

私はinputTextareaのためにそうするためのオープンインタフェースがあるとは思わないが、あなたがのclientIdを取得し、HTMLのテキストエリアを無効にするか、それを完全に無効にするにはjqueryのを使用することができます。

<p:selectOneMenu onchange="if(this.value == 1) { $(addressTextarea.input.attr('disabled', 'true)); $(addressTextarea.input.addClass('ui-state-disabled')) }"> 

または使用あなたが使用できるAJAX:

<p:selectOneMenu id="way" value="#{selectValue}"> 
    <f:selectItem value="0" itemLabel="#{texts.post}" /> 
    <p:ajax event="change" update="address"/> 
</p:selectOneMenu> 

<p:inputTextarea id="address" widgetVar="addressTextarea" value="" disabled="#{selectValue == 0}"/> 
+1

最初のものは動作しませんでしたが、AJAXソリューションがそのことを行いました。ありがとう! – James

+0

私は同意する。より洗練されたアプローチです。 ;)ありがとう! – Fritz

1

あなたがこの試すことができます:

<p:inputTextarea id="address" widgetVar="addressTextareaWV" /> 

<p:selectOneMenu id="way" onchange="disableComponent()"/> 

<script language="javascript" type="text/javascript"> 
    function disableComponent() { 
     PF('addressTextareaWV').disable(); 
    } 

    function enableComponent() { 
     PF('addressTextareaWV').enable(); 
    } 
</script> 
関連する問題