Question Erreur non détectée: erreur de syntaxe, expression non reconnue: pseudo non pris en charge: [dupliquer]


Cette question a déjà une réponse ici:

J'ai un txtBox et son identifiant est: beginDateTxt

mais jsf le fait j_idt8:beginDateTxt

en jquery j'essaie 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 je suis en dessous de l'erreur:

Erreur non détectée: erreur de syntaxe, expression non reconnue: pseudo non pris en charge: beginDateTxt

Pourquoi?


29
2018-04-18 07:46


origine


Réponses:


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 les sélecteurs CSS dans son $() fonction. Dans un sélecteur CSS le : dénote une pseudo-classe. Cependant, dans votre cas, le : est juste une partie de l'id.

Si vous utilisez le générique getElementById(), l'argument est ne pas décomposé, mais vu comme un identifiant tout à fait. Donc, 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 de noms dans votre JSF.

MODIFIER

le Documentation jQuery sur les sélecteurs indique que vous devriez échapper à des caractères spéciaux en utilisant \\:

Pour utiliser les méta-caractères (tels que! "# $% & '() * +,. / :; <=>? @ [] ^` {|} ~) En tant que 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'});

56
2018-04-18 07:50



Si vous voulez utiliser le sélecteur d’identifiant jQuery, vous devez échapper à la : avec \ et puis pour échapper à la \ (double évasion)

Ici:

$(function() {
    $("#j_idt8\\:beginDateTxt").mobiscroll().date({
        theme: 'android-ics light',
        mode:'scroller', display: 'bottom'
    });
});

27
2018-04-18 08:18