Si potrebbe provare
$(document.getElementById('j_idt8:beginDateTxt')).mobiscroll().date({theme: 'android-ics light', mode:'scroller', display: 'bottom'});
In generale jQuery utilizza qualcosa come selettori CSS nella sua funzione $()
. In un selettore CSS lo :
denota una pseudo-classe. Tuttavia, nel tuo caso lo :
è solo una parte dell'ID.
Se si utilizza il getElementById()
generico, l'argomento è non decomposto, ma visto come un ID del tutto. Quindi, utilizzando getElementById()
e avvolgendo il risultato con $()
è possibile aggirare questo "malinteso".
In generale, tuttavia, penso che sarebbe meglio cambiare lo schema dei nomi nello JSF.
EDIT
Le jQuery documentation on selectors stati che si dovrebbe sfuggire caratteri speciali con l'uso di \\
:
To use any of the meta-characters (such as !"#$%&'()*+,./:;<=>[email protected][]^`{|}~) as a literal part of a name, it must be escaped with with two backslashes: \. For example, an element with id="foo.bar"
, can use the selector $("#foo\\.bar")
.
questo porterà alla risposta già data da Daniel, che a mio parere è superiore alla risposta di cui sopra. La spiegazione, tuttavia, rimane valida.
$("#j_idt8\\:beginDateTxt").mobiscroll().date({theme: 'android-ics light', mode:'scroller', display: 'bottom'});
si tratta esattamente! thx – user2294016
Ho pensato che stiamo usando il selettore jQuery per non utilizzare getElementById – AaA
@BobSort Il problema era che l'id includeva un ':', il che faceva pensare a jQuery che venisse usata una pseudo classe e nel risultato fallire. Per aggirare ho usato 'getElementById()', che interpreta il suo argomento come una stringa. – Sirko