Нужно получить значение inputHidden из a4j: form с помощью javascript - PullRequest
0 голосов
/ 28 мая 2011

У меня следующая проблема. Мне нужно получить скрытое значение, которое находится в форме a4j: из JavaScript.

<a4j:form id="orderModalFormId">
    <h:form style="display:none;" prependId="false">
            <h:inputHidden id="maxVal" value="#{bean.maxVal}"/>
    </h:form>

    //...rest code where javascript is used

</a4j:form>

в JavaScript

...    
var maxValue =  jQuery('#orderModalFormId : maxVal').val();
...

Проблема в том, что во время отладки javascript maxValue остается неопределенным. Я новенький в javascript и jQuery. Где трюк? Спасибо!

Ответы [ 3 ]

1 голос
/ 28 мая 2011

Психологически создать HTML сложно, но вам почти наверняка понадобится простой id селектор:

var maxValue = jQuery('#maxVal').val();

Из редактирования кажется, что вам нужно это:

var maxValue = jQuery('#orderModalFormId\\:maxVal');

Вам нужно экранировать :, чтобы jQuery не анализировал его как псевдоселектор. Вам нужно использовать экранированный обратный слеш (\\:), чтобы Javascript не интерпретировал \: как экранированный двоеточие.

См. JsFiddle для примера экранированного двоеточия в селекторе id .

0 голосов
/ 30 мая 2011

На самом деле, вы оба были правы насчет синтаксиса, но проблема была другой природы.Оказалось, что моя форма ajax не работала с моим javascript должным образом, поэтому я просто направил параметр maxVal в эту форму a4j: с помощью ui: include (моя форма a4j: находится в отдельном файле xhtml).Примерно так:

mainPage.xhtml

<h:form style="display:none;" prependId="false">
   <h:inputHidden id="maxVald" value="#{mainBean.maxVal}"/>
</h:form>

<ui:include src="/xhtml/include/orderModalForm.xhtml">
    <ui:param name="maxVal" value="#{mainBean.maxVal}"/>
</ui:include>

и в javascript я так и сделал

var maxFreezePeriod =  jQuery('#maxFreezePeriod').val();

Спасибо за ваши ответы:)

0 голосов
/ 28 мая 2011

: является недопустимым символом в селекторах CSS, и эти пробелы не улучшают его.

Либо используйте хороший старый JS:

var value = document.getElementById("orderModalFormId:maxVal").value;

, либо экранируйте его двойной обратной косой чертой:

var value = jQuery("#orderModalFormId\\:maxVal").val();

Или используйте селектор атрибутов jQuery:

var value = jQuery("id=['orderModalFormId:maxVal']").val();

Или когда JS встроен в страницу JSF (а вы уже используете RichFaces):

var value = #{rich:component('maxVal')}.val();
...