在事件上禁用JSF Primefaces textArea

Disable JSF Primefaces textArea on event

本文关键字:JSF Primefaces textArea 事件      更新时间:2023-09-26

我有一个简单的表单,包含selectOneMenu和文本区域,如果在select(onchange事件)中选择了某个值,我想禁用它。我怎样才能做到这一点?

<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="" />

我不认为有一个开放的接口可以为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}"/>

你可以试试这个:

<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>