Pregunta

Tengo un formulario en el que algunos campos tiene que ser desactivado hasta que se hace clic en una casilla de verificación. Para JSF-elementos están todos funcionando bien. El problema es con los elementos primefaces.

Para un elemento JSF como una lista desplegable que hago de esta manera:

<h:selectOneMenu value="countryValue" disabled="true" id="countryId">
    <f:selectItems value="countries" />
</h:selectOneMenu>

Y para PrimeFaces-elementos, una calandra de esta manera:

<p:calendar disabled="true" id="datePicker" value="dateValue" 
         pattern="yyyy-MM-dd" startWeekday="1"    
            timeZone="GMT">  
</p:calendar>

El JavaScript he utilizado para permitir que estos elementos en un evento es simple como:

function enableLocationUpdateFilter()
{
    document.getElementById('form:datePicker').disabled = false;
}

El jQuery llamando al onchange evento:

 jQuery('.countryCheckBoxId').change(function()
 {
    enableCountryFilter();
 });

Al investigar el elemento Primefaces en Firebug que se puede ver que el id "selector de fechas" sólo actúa como un identificador de "span" y el ID real para el InputField HTML es "datePicker_input". Así, en lugar mediante el uso de "selector de fechas" como identificación en el javascript He intentado utilizar "datePicker_input". Esto permite que el campo, pero el evento jQuery educación de la calandria real no funciona.

También parece que el calendario se llama a través de un jquery-evento. En este caso jquery-se podía ver que el valor por defecto desactivado se establece en true. Y creo que ese es el problema, no puedo establecer esa parte a falso.

¿Fue útil?

Solución 2

Dado que el calendario se llama cuando se presiona el campo de texto He intentado lo siguiente:

-Establecer los discapacitados variable de calendario en false.
-Establecer el atributo discapacitados campo de texto de entrada para el calendario de verdad.
-En cambio, establecer el atributo disabled campo de texto para falso.

De este modo, el atributo deshabilitado para el calendario siempre se establece en false (lo que significa que no está desactivado) y sólo ajustar el campo de texto para personas con discapacidad en el código JavaScript en la representación. De esta manera no se puede desencadenar el calendario y la única incapacitante va para el campo de texto y el cambio que permite de nuevo el campo de texto.

Otros consejos

Lo mejor que se me ocurre es hacer llamadas Ajax en el servidor, y regenere el calendario. Podría decirnos lo que está provocando este evento jQuery-onchange?

Y supongo que está utilizando JSF 2.0, ¿verdad?

ACTUALIZACIÓN:

Así que desea activar la p:calendar cuando se hace clic en casilla de verificación. Algo similar a esto debería funcionar:

<h:selectBooleanCheckbox id="countryCheckBoxId" value="#{bean.countryBoolean}">
   <f:ajax render="datePicker"/>
</h:selectBooleanCheckbox>

<p:calendar disabled="#{!bean.countryBoolean}" id="datePicker" value="dateValue" 
        pattern="yyyy-MM-dd" startWeekday="1" timeZone="GMT">     
</p:calendar>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top