通过javascript从a4j:form获取输入隐藏的值的问题

时间:2011-05-28 18:56:10

标签: javascript jquery jsf hidden-field ajax4jsf

我有以下问题。我需要从javascript获取a4j:form中的隐藏值。

<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 个答案:

答案 0 :(得分:1)

在心理上创建HTML很棘手,但您几乎肯定只想要一个简单的id选择器:

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

从编辑开始,您似乎需要这样:

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

您需要转义:,以便jQuery不会将其解析为伪选择器。您需要使用转义反斜杠(\\:),以便Javascript不会将\:解释为转义冒号。

See jsFiddle for an example of an escaped colon in an id selector

答案 1 :(得分:0)

:是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();

答案 2 :(得分:0)

实际上,你们两个都是正确的语法,但问题是另一种性质。 似乎我的ajax表单没有正确使用我的javascript,所以我所做的只是通过ui:include(我的a4j:表单在单独的xhtml文件中)将maxVal的参数路径到这个a4j:form中。像这样:

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();

感谢您的回答:)