我有以下问题。我需要从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的新手。 诀窍在哪里? 谢谢!
答案 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();
感谢您的回答:)