Динамический выбор пунктов меню с помощью jQuery Uniform и JSF2 - PullRequest
1 голос
/ 16 мая 2011

У нас есть приложение, которое использует 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();

Проблема в том, что когда поле выбора 3 отображается после вызова Ajax, они «теряют» декорацию и становятся непригодными для использования в FF, Chrome и т. Д. В IE неформатированное поле выбора помещается поверх старого. , Я попытался вызвать функциюiform () в функции ajaxCallback, но она не работает.

Любая помощь приветствуется

Ответы [ 2 ]

2 голосов
/ 20 мая 2011

Я разобрался в проблеме.

Вам необходимо вызвать $ .uniform.restore ('select') перед вызовом $ ('select') .iform (). Единое восстановление удаляет все единообразное форматирование и восстанавливает его в «нормальном» элементе выбора.

0 голосов
/ 16 мая 2011

Это должно работать для вас:

<script type="text/javascript">
    function ajaxCallback(e) {
        if(e.status == 'success') {
            $('select, input:text, input:radio').uniform();
        }
    }
</script>
...