Подтвердить что ты не робот

Ошибка поиска: ошибка синтаксиса, непризнанное выражение: неподдерживаемый псевдо:

У меня есть txtBox, и его id: beginDateTxt

но jsf делает его j_idt8:beginDateTxt

в jquery я пытаюсь достичь его так

  <script type="text/javascript">
            $(document).ready(function() {
                $(function() {
                    $("#j_idt8:beginDateTxt").mobiscroll().date({
                       theme: 'android-ics light', mode:'scroller', display: 'bottom'
                    });
                });

            });
   </script>

но я получаю ниже ошибки:

Неподготовленная ошибка: ошибка синтаксиса, нераспознанное выражение: неподдерживаемый псевдо: beginDateTxt

почему?

4b9b3361

Ответ 1

Вы можете попробовать

$(document.getElementById('j_idt8:beginDateTxt')).mobiscroll().date({theme: 'android-ics light', mode:'scroller', display: 'bottom'});

В общем случае jQuery использует что-то вроде селекторов CSS в своей функции $(). В селекторе CSS : обозначает псевдокласс. Однако в вашем случае : является лишь частью идентификатора.

Если вы используете общий getElementById(), аргумент не разлагается, а рассматривается как идентификатор. Таким образом, используя getElementById() и завершая результат с помощью $(), вы можете обойти это "недоразумение".

В целом, однако, я думаю, что было бы лучше изменить схему имен в вашем JSF.

ИЗМЕНИТЬ

Документация jQuery для селекторов утверждает, что вам следует избегать специальных символов с помощью \\:

Чтобы использовать любой из метасимволов (таких как!) # $% & '() * +,./:; <= > ? @[] ^ `{|} ~) как буквальная часть имени, он должен быть экранирован с помощью двух обратных косых черт: \. Например, элемент с id="foo.bar" может использовать селектор $("#foo\\.bar").

Это приведет к тому, что Даниил дал ответ, который, на мой взгляд, превосходит ответ, приведенный выше. Объяснение, однако, остается в силе.

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

Ответ 2

Если вы хотите использовать селектор id jQuery, вам нужно выйти из : с помощью \, а затем выйти из \ (двойной escape)

Здесь:

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