2010-03-26 13 views
0

J'ai le code JSF comme:Comment obtenir élément de javascript JSF 2.0

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

Je voudrais obtenir cet élément de JavaScript par ID (from), mais je ne peux pas, parce que dans HTML généré c'est j_idt8:from

Comment puis-je obtenir cet élément par exemple jQuery? Existe-t-il un moyen de forcer JSF2 à ne pas modifier les ID?

+0

double possible de [Comment sélectionner les composants d'interface PrimeFaces ou JSF en utilisant jQuery?] (Http://stackoverflow.com/questions/7927716/how-to-select-primefaces -ui-ou-jsf-components-using-jquery) – BalusC

+0

[J'ai répondu à cette question ici.] (http://stackoverflow.com/questions/6045307/how-can-i-know-the-id-of -a-jsf-component-so-je-peux-utiliser-en-javascript) – ftravers

Répondre

2

Vous pouvez utiliser une classe personnalisée que vous affectez uniquement à cet élément et utiliser des sélecteurs css ou attribuer un ID au formulaire et obtenir l'élément avec l'ID formid:from.

0

Dans JSF 1.2, vous pouvez utiliser forceId = "true". Je ne suis pas sûr si vous pouvez utiliser t: input dans JSF 2, mais vous devriez pouvoir. Ensuite, son identifiant en HTML sera ce que vous attendez.

2

Existe-t-il un moyen de forcer JSF2 à ne pas modifier les ID?

Vous pouvez définir cette façon prependId="false" en HTML généré, il sera de en place de j_idt8: de.

prependId: Drapeau indiquant si cette forme ou non doit préfixer son id id de son descendant au cours du processus de génération clientId . Si cet indicateur n'est pas défini, la valeur par défaut est true.

Comment puis-je obtenir cet élément par ex. jQuery?

Vous pouvez utiliser ancestorComponent:from dans jQuery pour obtenir cet élément.

En fait j_idt8 dans j_idt8: à partir est généré automatiquement id du composant ancêtre de votre <h:inputText/>

par exemple

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

maintenant généré id de saisie de texte serait sous forme : de

Si vous ne fournissez pas d'identifiant à un composant généré par votre navigateur cela de manière dynamique. Donc, n'oubliez pas de fournir des identifiants aux composants.

0

Vous pouvez utiliser jquery. Simplement, utilisez un sélecteur définissant le texte qu'il doit contenir. Quelque chose comme ceci:

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

'* =' est utilisé pour dire que l'attribut name contient une chaîne de caractères. Il existe également '~ =' avec une signification similaire.

Pour des explications et des exemples détaillés visitez http://api.jquery.com/attribute-contains-selector/