选中复选框时显示/隐藏面板

时间:2014-03-08 19:33:03

标签: javascript jsf-2 checkbox

我想在选中复选框时显示面板,或者在未选中复选框时隐藏相同的面板。 当复选框的值更改时,以下代码正常工作。 但是,最初(在构建网页时)始终显示面板。由于取消选中该复选框,因此不应显示outputLabel(“hallo”)。只有在选中复选框后,才会显示文本。所以,这里出了点问题......

以下是代码:

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://java.sun.com/jsf/html">
<h:body>

    <h:form id="myForm">
        <h:selectBooleanCheckbox id="myCheckbox" onclick="hideOrShow(this.checked);"/>
        <h:panelGrid id="myPanel" columns="2" >
            <h:outputLabel for="hallo" value="Halli Hallo" />
        </h:panelGrid>
    </h:form>

</h:body>
<script type="text/javascript">
    function hideOrShow(show) {
        var obj = document.getElementById("myForm:myPanel");
        if (show) {
            obj.style.display = "block";
        } else {
            obj.style.display = "none";
        }
    }
</script>

如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

显示/隐藏面板不需要javascript。以下是带有ajax的代码版本:

 <h:form>
     <h:selectBooleanCheckbox id="myCheckbox" value="#{helloWorld.checked}">
         <f:ajax event="click" render="myPanel" execute="myPanel" />
     </h:selectBooleanCheckbox>
     <h:panelGroup id="myPanel" layout="block">
         <h:outputLabel value="hi there" rendered="#{helloWorld.checked}" />
     </h:panelGroup>
 </h:form>

和bean

private boolean checked;
public boolean isChecked() {
    return checked;
}
public void setChecked(boolean checked) {
    this.checked = checked;
}