Domanda

Ho codice JSF come:

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

Mi piacerebbe ottenere questo elemento da JavaScript per ID (from), ma non ci riesco, perché in HTML generato è j_idt8:from

Come posso ottenere questo elemento nel esempio jQuery? C'è un modo per forzare JSF2 non cambiare ids?

È stato utile?

Soluzione

È possibile utilizzare una classe personalizzata, che si assegna solo a questo elemento e utilizzare selettori CSS o assegnare un ID al modulo e ottenere l'elemento con il formid:from id.

Altri suggerimenti

  

C'è un modo per forzare JSF2 non cambiare ids?

È possibile impostare prependId="false" In questo modo in HTML generato sarà dal al posto di j_idt8:. Da

prependId: flag che indica se o meno questa forma dovrebbe anteporre  la sua id per id del suo discendente durante la generazione clientId  processi. Se questo flag non è impostato, il valore predefinito è vero.

  

Come posso ottenere questo elemento nel esempio jQuery?

È possibile utilizzare ancestorComponent:from in jQuery per ottenere questo elemento.

In realtà j_idt8 in j_idt8: da è generato Auto ID di componente antenato del tuo <h:inputText/>

per esempio

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

Ora generato id di testo di input sarebbe forma: da

Se non si forniscono id a un componente di browser genera quel modo dinamico. Quindi non dimenticate di fornire ID per i componenti.

In JSF 1.2 è possibile utilizzare forceId = "true". Non sono sicuro se è possibile utilizzare t: ingresso in JSF 2, ma si dovrebbe essere in grado di. Allora è ID in HTML sarà quello che vi aspettate.

Per conseguire piena ID di un componente, usare EL oggetti impliciti e le loro proprietà come #{cc.clientId} e #{component.clientId}. Fonte: acquisire piena prefisso per un clientId componente all'interno denominazione contenitori con JSF 2.0 .

È possibile utilizzare jQuery. Semplicemente, utilizzare un selettore che definisce il testo dovrebbe contiene. Qualcosa di simile a questo:

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

'* =' è usato per dire che l'attributo nome contiene qualche stringa. Inoltre esistono '~ =' con significato simile.

Per spiegazioni dettagliate ed esempi visita http://api.jquery.com/attribute-contains -selector /

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top