我想动态显示一个panelGroup。
在这段代码中,我有可以填充的方框。当最后一个可用框填满数据时,应显示带有一组新框的panelGroup。
<ice:panelGroup binding="#{myPage.boxes0to9}" />
<ice:panelGroup binding="#{myPage.boxes10to19}" />
如果只填写了#{myPage.boxes0to9}中的最后一个框,我怎么让第二个panelGroup显示?
谢谢!
答案 0 :(得分:0)
您可以通过使用div包装<ice:panelGroup>
并通过javascript检查显示/隐藏它来实现它:
<script type="text/javascript">
var arrInputs = new Array(9);
function checkInputsFulfilled(value, index) {
arrInputs[index] = (value == "");
var filled = true;
for(var i = 0; i < arrInputs.length; i++) {
if (arrInputs[i]) {
filled = false;
break;
}
}
document.getElementById("myDiv").style.display = filled ? "block" : "none";
}
</script>
<ice:panelGroup binding="#{myPage.boxes0to9}">
<!-- your 9 inputs (or more) here, I'll write 1 as a sample -->
<h:inputText value="#{myBean.attribute1}" onchange="checkInputsFulfilled(this.value, 0);" />
</ice:panelGroup>
<div id="myDiv" style="display:none">
<ice:panelGroup binding="#{myPage.boxes10to19}">
</ice:panelGroup>
</div>
您也可以使用ajax支持并渲染一个包装第二个<ice:panelGroup>
的JSF组件,但是当您只清空其中一个启动输入并且该组应该隐藏时,这将产生很大的影响。当然,这最后一个行为是在javascript中控制的,如果你不想要它只是修改它:)。