Opciones de menú de selección dinámica con jQuery Uniform y JSF2

Tenemos una aplicación que usa JSF 2, OpenFaces, jQuery y el complemento Uniform. Hay un formulario que tiene un cuadro de selección con opciones que se completan dinámicamente según el valor de otro cuadro de selección. Estamos usando la etiqueta JSF 2 f: ajax para activar la repoblación del cuadro de selección.

Aquí está el cuadro que dispara la llamada 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>

Otros 3 cuadros de selección se completan a partir de esta llamada.

La página también usa el complemento Uniforme para decorar todas las entradas del formulario. En la función document.ready (), se llama a lo siguiente para configurar esto:

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

El problema es que cuando los 3 cuadros de selección se procesan después de la llamada Ajax, "pierden" la decoración y se vuelven inutilizables en FF, Chrome, etc. En IE, se coloca un cuadro de selección sin formato sobre el anterior. Intenté llamar a la función uniform () en la función ajaxCallback pero no funciona.

Cualquier ayuda apreciada

preguntado el 16 de mayo de 11 a las 17:05

debería funcionar cuando lo llame en la función onevent con un estado de éxito. ¿Puedes publicar lo que quieres para la función ajaxCallback? -

2 Respuestas

Resolví el problema.

Debe llamar a $ .uniform.restore ('select') antes de llamar a $ ('select'). Uniform (). La restauración uniforme elimina todo el formato uniforme y lo restaura a un control de selección "normal".

contestado el 20 de mayo de 11 a las 21:05

Esto debería funcionar para ti:

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

contestado el 16 de mayo de 11 a las 22:05

Ya intenté hacer esto. Vuelve a decorar los campos, pero cuando haces clic en el cuadro de selección, no pasa nada. - Ted r.

tal vez el complemento uniforme crea elementos dom adicionales que no forman parte del render. intente cambiar render a render = "@ formulario". ¿Funciona cuando renderizas todo? - Dave Maple

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.