2012-03-11 65 views
3

我有一个selectOneMenu和textarea的简单表单,如果在select(onchange事件)中选择了某个值,我想禁用它。我怎样才能做到这一点?禁用事件上的JSF Primefaces textArea

<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 2012-03-11 14:25:54

+0

我同意。这也是更优雅的方法。 ;) 谢谢! – Fritz 2015-01-06 00:14:39

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>