Accediendo atributo deshabilitado para PrimeFaces Calendario con JavaScript
-
25-09-2019 - |
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.
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>