Как получить идентификатор JSF через jQuery

Смотрите простой пример JSF:

<h:form id="signup-form">
    <h:inputText id="email" value="#{beanBean.email}"/>
</h:form>

Будет сгенерирован следующий HTML-код:

<input id="signup-form:email" type="text"/>

Использует селектор jQuery, чтобы получить идентификатор электронной почты, но не удалось.

<script>
   jQuery(document).ready(function($) {

    $('#signup-form:email').checkEmailFormat();

   });
</script>

Решение

Это хорошо известная проблема интеграции JSF и jQuery - двоеточие «`: `» зарезервировано для селектора jQuery. Чтобы использовать селектор jQuery для получения идентификатора JSF, вам необходимо « избежать » двоеточия, поместив перед ним две обратные косые черты:

<script>
   jQuery(document).ready(function($) {

    $('#signup-form\\:email').checkEmailFormat();

   });
</script>

Для PrimeFaces

PrimeFaces поставляется с функцией для выхода из идентификатора JSF:

<script>
   jQuery(document).ready(function($) {

    $(PrimeFaces.escapeClientId('signup-form:emil')).checkEmailFormat();

   });
</script>

Эта функция PrimeFaces.escapeClientId взята из` primefaces.js`, просмотрите исходный код, это просто функция-обертка js для замены двоеточия «:» с размещением двойной обратной косой черты перед ней.

primefaces.js

escapeClientId:function(a){return"#"+a.replace(/:/g,"\\:")}

P.S Протестировано с PrimeFaces 3.3

Рекомендации

, http://docs.jquery.com/Frequently Asked Questions#How do I select an element by an ID that has characters used in CSS__notation.3F[How

выбрать элемент по идентификатору, в котором есть символы, используемые в CSS нотация?], http://www.tequilafish.com/2007/12/04/jquery-how-to-get-the-id-of-your-current-object/ [jQuery

ссылка://тег/jquery/[jquery]ссылка://тег/jsf/[jsf]ссылка://тег/primefaces/[primefaces]