Pregunta

Tengo código JSF como:

<h:inputText id="from" value="#{fromToMBean.fromName}"/>

Me gustaría conseguir este elemento de JavaScript por ID (from), pero no puedo, porque en HTML generado es j_idt8:from

¿Cómo puedo obtener este elemento en, por ejemplo, jQuery? ¿Hay alguna manera de forzar JSF2 no identificadores de cambio?

¿Fue útil?

Solución

Se puede utilizar una clase personalizada que sólo se asigna a este elemento y el uso de CSS selectores o asigna un identificador a la forma y obtener el elemento con el ID formid:from.

Otros consejos

  

¿Hay alguna manera de forzar JSF2 no identificadores de cambio?

Se puede configurar prependId="false" esta manera en HTML generado será en lugar de j_idt8:. De

prependId: bandera que indica si o no este formulario debe anteponer  su ID de identificación de su descendiente durante la generación clientId  proceso. Si esta bandera no está definida, el valor predeterminado es true.

  

¿Cómo puedo obtener este elemento en, por ejemplo, jQuery?

Se puede utilizar ancestorComponent:from en jQuery para obtener este elemento.

En realidad j_idt8 en j_idt8: de es la identificación automática generada ancestro de los componentes de su <h:inputText/>

por ejemplo

<h:form id="form">
<h:inputText id="from" value="#{fromToMBean.fromName}"/>
</h:form>

ID Ahora generada de texto de entrada sería forma: a partir de

Si usted no proporciona identificación por un componente que no sea el navegador genera que de forma dinámica. Así que no se olvide de proporcionar los identificadores de componentes.

En JSF 1.2 se puede utilizar forceId = "true". No estoy seguro de si se puede usar t: entrada en JSF 2, pero que debería ser capaz de hacerlo. Entonces es el ID en HTML será lo que esperas.

Con el fin de lograr la plena ID para un componente, utilice EL objetos implícitos y sus propiedades, tales como #{cc.clientId} y #{component.clientId}. Fuente: adquirir completo prefijo para un clientId componente dentro de nomenclatura contenedores con JSF 2.0 .

Se puede usar jQuery. Simplemente, utilice un selector que define el texto que debería contener. Algo como esto:

$( "input[name*='from']" )

'* =' se utiliza para decir que el atributo de nombre contiene un trozo de cuerda. También existen '~ =' con significado similar.

Para obtener una explicación detallada y ejemplos a http://api.jquery.com/attribute-contains -selector /

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top