0

panelGroup を動的に表示したい。

このコードには、埋めることができるボックスがあります。利用可能な最後のボックスがデータでいっぱいになると、新しいボックス セットを持つ panelGroup が表示されます。

<ice:panelGroup binding="#{myPage.boxes0to9}" />
<ice:panelGroup binding="#{myPage.boxes10to19}" />

#{myPage.boxes0to9} の最後のボックスが入力された場合にのみ、2 番目の panelGroup を表示するにはどうすればよいですか?

ありがとう!

4

1 に答える 1

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 サポートを使用してそれを実行し、2 番目をラップする JSF コンポーネントをレンダリングすることもできますが、<ice:panelGroup>開始入力の 1 つを空にしてグループを非表示にする場合、これは大きな影響を与えます。もちろん、この最後の動作は JavaScript で制御されます。変更したくない場合は :)。

于 2012-05-30T03:02:50.553 に答える