Voir un exemple simple de JSF:
<h:form id="signup-form"> <h:inputText id="email" value="#{beanBean.email}"/> </h:form>
Il va générer le code HTML suivant:
<input id="signup-form:email" type="text"/>
Utilise le sélecteur jQuery pour obtenir l’identifiant du courrier électronique, mais a échoué.
<script> jQuery(document).ready(function($) { $('#signup-form:email').checkEmailFormat(); }); </script>
Solution
Il s’agit d’un problème bien connu pour intégrer JSF et jQuery - les deux-points «`: `» sont réservés au sélecteur jQuery. Pour utiliser jQuery seletor pour obtenir l’identifiant JSF, vous devez “** échapper” les deux points en plaçant deux barres obliques inverses devant celui-ci:
<script> jQuery(document).ready(function($) { $('#signup-form\\:email').checkEmailFormat(); }); </script>
Pour PrimeFaces
PrimeFaces est livré avec une fonction permettant d’échapper à l’identifiant JSF:
<script> jQuery(document).ready(function($) { $(PrimeFaces.escapeClientId('signup-form:emil')).checkEmailFormat(); }); </script>
Cette fonction
PrimeFaces.escapeClientId
provient de` primefaces.js`, passez en revue le code source. Il s’agit simplement d’une fonction wrapper js permettant de remplacer le signe deux-points «:» par l’ajout d’une double barre oblique inversée.
primefaces.js
escapeClientId:function(a){return"#"+a.replace(/:/g,"\\:")}
P.S Testé avec PrimeFaces 3.3
Références
-
http://docs.jquery.com/Frequent Asked Questions#How do I select an element by an ID that has characters used in CSS__notation.3F[How
puis-je sélectionner un élément par un ID qui a des caractères utilisés en CSS notation?]. http://www.tequilafish.com/2007/12/04/jquery-how-to-get-the-id-of-your-current-object/ [jQuery
lien://tag/jquery/[jquery]lien://tag/jsf/[jsf] primefaces