1

JSF 2、OpenFaces、jQuery、および Uniform プラグインを使用するアプリケーションがあります。別の選択ボックスの値に基づいて動的に入力されるオプションを含む選択ボックスを持つフォームがあります。JSF 2 f:ajax タグを使用して、選択ボックスの再生成を開始します。

ajax 呼び出しを起動するボックスは次のとおりです。

    <h:selectOneMenu id="applicant-employmentStatus-civilian"
                        value="#{membershipData.civilianEmploymentStatus}">
                        <f:selectItems value="#{lookup.civilianEmploymentOptions }"/>
                        <f:ajax event="change" 
                            render="applicant-eligibility-base applicant-eligibility-ship applicant-eligibility-govtAgency"
                            onevent="ajaxCallback"/>
                        <o:validateCustom clientFunction="return validateEligibilityField(input.id);"
                            summary=""
                            detail="#{msgs['errormesg.eligibility.employment']}" />
                    </h:selectOneMenu>

この呼び出しから、他の 3 つの選択ボックスにデータが取り込まれます。

このページでは、Uniform プラグインも使用して、すべてのフォーム入力を装飾しています。document.ready() 関数では、これを構成するために以下が呼び出されます。

$('select, input:text, input:radio').uniform();

問題は、Ajax 呼び出しの後に 3 つの選択ボックスがレンダリングされると、装飾が「失われ」、FF や Chrome などで使用できなくなることです。IE では、フォーマットされていない選択ボックスが古いものの上に配置されます。ajaxCallback 関数で uniform() 関数を呼び出してみましたが、機能しません。

どんな助けでも大歓迎

4

2 に答える 2

2

私は問題を理解しました。

$('select').uniform() を呼び出す前に、$.uniform.restore('select') を呼び出す必要があります。統一復元は、すべての統一フォーマットを削除し、「通常の」選択コントロールに復元します。

于 2011-05-20T17:40:36.733 に答える
0

これはあなたのために働くはずです:

<script type="text/javascript">
    function ajaxCallback(e) {
        if(e.status == 'success') {
            $('select, input:text, input:radio').uniform();
        }
    }
</script>
于 2011-05-16T18:15:31.857 に答える