隐藏/显示selectOneMenu,具体取决于Primefaces中另一个selectOneMenu中选择的值

时间:2012-02-13 13:04:53

标签: primefaces

我有一个带有rowEdit的Primefaces dataTable。两列包含每个中的selectOneMenu控件。第一个selectOneMenu的值为SINGLE,MULTIPLE。如果它是SINGLE,则第二列应包含selectOneMenu,如果它是MULTIPLE,则第二列应包含pickList。 最初,第二列显示selectOneMenu或pickList,根据bean中设置的第一个selectOneMenu中的值。但是当用户在第一个selectOneMenu中更改值时,我希望第二个列中的第二个selectOneMenu或pickList可见。我尝试使用JQuery但没有成功。以下是代码......

<p:cellEditor>
<f:facet name="output">
     <h:outputLabel value="#{bean.INPUTTYPE}" />
    </f:facet>

<f:facet name="input">
        <p:selectOneMenu id="inputType" value="#{bean.InputType}" >
        <f:selectItems value="#{beanDetails.inputTypes}"></f:selectItems>
            <p:ajax event="change" oncomplete="inputTypeChanged(#{rowIndex})"/> 
        </p:selectOneMenu>
    </f:facet>
</p:cellEditor> 
</p:column>


<p:column>
    <f:facet name="header">
            <h:outputLabel value="Default Value" />
     </f:facet>

     <p:cellEditor>
    <f:facet name="output">
        <h:outputLabel value="#{bean.DEFAULTVALUE}"/>
    </f:facet>

    <f:facet name="input">
        <p:selectOneMenu id="distinctVals" value="#{bean.DEFAULTVALUE}" rendered="#{bean.fldType == 1}" >
            <f:selectItems value="#{bean.DISTINCT_VALUES}"/>
        </p:selectOneMenu>

        <p:pickList value="#{bean.PICK_VALUES}" id="pickVals" var="pickVals" itemLabel="#{pickVals}" itemValue="#{pickVals}" rendered="#{bean.fldType == 2}"/>
    </f:facet>   
</p:cellEditor> 
</p:column>


<script type="text/javascript">
    function inputTypeChanged(ind){
        var str = 'table_Details:' + ind + ':inputType_input';
        var selected = $(document.getElementById(str));

        if(selected.val() == 'SINGLE'){
            str = 'table_Details:' + ind + ':distinctVals_input';
                selected = $(document.getElementById(str));
                $(selected).show();

                str = 'table_Details:' + ind + ':pickVals_input';
                selected = $(document.getElementById(str));
                $(selected).fadeOut();
        }else if(selected.val() == 'MULTIPLE'){
                str = 'table_Details:' + ind + ':distinctVals_input';
                selected = $(document.getElementById(str));
                $(selected).fadeOut();

                str = 'table_Details:' + ind + ':pickVals_input';
                selected = $(document.getElementById(str));
                $(selected).fadeIn();

        }
    }
</script>

我正在使用primefaces-3.1.RC1。我的代码出了什么问题?

1 个答案:

答案 0 :(得分:0)

相互依赖的验证在RowEditEvent

中处理
相关问题