DIsable inputTextarea element based on value of a specific checkbox element within a ui:repeat list?

Viewed 58

How can I dynamicaly disable an inputTextarea based on the value of a specific checkbox from within a ui:repeat list?

<ui:repeat var="eligibilityReason"
           value="#{itemDetails.itemSelected.listEligibilityReasons}">
    <h:selectBooleanCheckbox id="eligibilityReasonOptId"
                             value="#{eligibilityReason.selected}"/>
    <h:outputText value="#{eligibilityReason.eligiReasonDescr}"/>
</ui:repeat>
    
<h:inputTextarea id="ineligiReasonOtherId"
                 value="#{itemDetails.itemSelected.ineligiReasonOther}" 
                 disabled="???" />

Backing bean:

private String eligiReason;
private String eligiReasonDescr;
private boolean selected;

listEligibilityReasons gets a List<EligibilityReason>. So how can I dynamically enable/disable the inputTextarea based only on the selected/checkbox value for eligiReason='99'?

1 Answers

Something like this should do. The ajax event is ONLY fired for item 99 and calls a Java method to set a Boolean flag for the Text Area. This is untested but gives you the idea of what you need to do.

<ui:repeat var="eligibilityReason" value="#{itemDetails.itemSelected.listEligibilityReasons}">
     <p:selectBooleanCheckbox id="eligibilityReasonOptId" value="#{eligibilityReason.selected}" itemLabel="#{eligibilityReason.eligiReasonDescr}">
         <p:ajax listener="#{view.reason99}" disabled="#{eligibilityReason.eligiReason eq '99'}" update="ineligiReasonOtherId" />
     </p:selectBooleanCheckbox>
</ui:repeat>

<h:inputTextarea id="ineligiReasonOtherId"
    value="#{itemDetails.itemSelected.ineligiReasonOther}" 
    disabled="#{view.textAreaDisabled}" />

Java:

   boolean textAreaEnabled = false;

   public void reason99(AjaxBehaviorEvent event) {
        textAreaEnabled = event.getSource().getValue();
    }
Related