【问题标题】:Disable JSF Primefaces textArea on event在事件中禁用 JSF Primefaces textArea
【发布时间】:2012-03-27 22:28:43
【问题描述】:

我有一个带有 selectOneMenu 和 textarea 的简单表单,如果在 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="" />

【问题讨论】:

    标签: javascript jsf primefaces


    【解决方案1】:

    我认为 inputTextarea 没有开放接口,但您可以获取 clientId 并禁用 html textarea 或使用 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}"/>
    

    【讨论】:

    • 第一个不起作用,但 AJAX 解决方案做到了。谢谢!
    • 我同意。这也是更优雅的方法。 ;) 谢谢!
    【解决方案2】:

    你可以试试这个:

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

    【讨论】:

      猜你喜欢
      • 2018-11-26
      • 2016-06-19
      • 2011-11-28
      • 1970-01-01
      • 2011-05-22
      • 2014-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多