j'ai un txtBox et son identifiant est: beginDateTxt
mais jsf fait j_idt8:beginDateTxt
en jquery j'essaye de l'atteindre comme ça
<script type="text/javascript">
$(document).ready(function() {
$(function() {
$("#j_idt8:beginDateTxt").mobiscroll().date({
theme: 'Android-ics light', mode:'scroller', display: 'bottom'
});
});
});
</script>
mais j'obtiens en dessous de l'erreur:
Erreur non interceptée: erreur de syntaxe, expression non reconnue: pseudo non pris en charge: beginDateTxt
pourquoi?
Tu pourrais essayer
$(document.getElementById('j_idt8:beginDateTxt')).mobiscroll().date({theme: 'Android-ics light', mode:'scroller', display: 'bottom'});
En général, jQuery utilise quelque chose comme des sélecteurs CSS dans sa fonction $()
. Dans un sélecteur CSS, le :
Désigne une pseudo-classe. Cependant, dans votre cas, le :
N'est qu'une partie de l'identifiant.
Si vous utilisez la fonction générique getElementById()
, l'argument est pas décomposé, mais vu comme un ID tout à fait. Ainsi, en utilisant getElementById()
et en enveloppant le résultat avec $()
, vous pouvez contourner ce "malentendu".
En général, cependant, je pense qu'il serait préférable de changer le schéma d'espacement de noms dans votre JSF.
[~ # ~] modifier [~ # ~]
La documentation jQuery sur les sélecteurs indique que vous devez échapper les caractères spéciaux en utilisant \\
:
Pour utiliser l'un des méta-caractères (tels que! "# $% & '() * +,./:; <=>? @ [] ^` {|} ~) Comme partie littérale d'un nom, il doit être échappé avec deux barres obliques inverses: \. Par exemple, un élément avec
id="foo.bar"
, peut utiliser le sélecteur$("#foo\\.bar")
.
Cela conduira à la réponse déjà donnée par Daniel, qui à mon avis est supérieure à la réponse donnée ci-dessus. L'explication reste cependant valable.
$("#j_idt8\\:beginDateTxt").mobiscroll().date({theme: 'Android-ics light', mode:'scroller', display: 'bottom'});
Si vous souhaitez utiliser le sélecteur d'ID jQuery, vous devez échapper au :
avec \
puis pour échapper au \
(double échappement)
Ici:
$(function() {
$("#j_idt8\\:beginDateTxt").mobiscroll().date({
theme: 'Android-ics light',
mode:'scroller', display: 'bottom'
});
});