我有类似的JSF代码:
<h:inputText id="from" value="#{fromToMBean.fromName}"/>
我想通过 ID ( from
) 从 JavaScript 中获取这个元素,但我不能,因为在生成的 HTML 中它是j_idt8:from
如何在例如 jQuery 中获取此元素?有什么办法可以强制 JSF2 不改变 id?
我有类似的JSF代码:
<h:inputText id="from" value="#{fromToMBean.fromName}"/>
我想通过 ID ( from
) 从 JavaScript 中获取这个元素,但我不能,因为在生成的 HTML 中它是j_idt8:from
如何在例如 jQuery 中获取此元素?有什么办法可以强制 JSF2 不改变 id?
您可以使用仅分配给此元素的自定义类并使用 css 选择器,也可以为表单分配 id 并获取具有 id 的元素formid:from
。
有什么办法可以强制 JSF2 不改变 id?
您可以prependId="false"
在生成的 HTML 中设置这种方式,它将from代替 j_idt8:from。
prependId :指示此表单是否应在 clientId 生成过程中将其 id 附加到其后代 id 的标志。如果未设置此标志,则默认值为 true。
如何在例如 jQuery 中获取此元素?
您可以ancestorComponent:from
在 jQuery 中使用来获取此元素。
实际上j_idt8 :from中的j_idt8是您的祖先组件的自动生成的 id<h:inputText/>
例如
<h:form id="form">
<h:inputText id="from" value="#{fromToMBean.fromName}"/>
</h:form>
现在生成的输入文本 id 将是form:from
如果您不向组件提供 id,那么您的浏览器会动态生成它。所以不要忘记为组件提供 id。
在 JSF 1.2 中,您可以使用 forceId="true"。我不确定您是否可以在 JSF 2 中使用 t:input,但您应该可以。然后它在 HTML 中的 ID 将是您所期望的。
为了获得组件的完整 ID,请使用 EL 隐式对象及其属性,例如#{cc.clientId}
和#{component.clientId}
。来源:使用 JSF 2.0 在命名容器中获取组件 clientId 的完整前缀。
你可以使用jquery。简单地说,使用一个选择器来定义它应该包含的文本。像这样的东西:
$( "input[name*='from']" )
'*='用于表示名称属性包含一些字符串。还存在具有相似含义的'~=' 。
有关详细说明和示例,请访问http://api.jquery.com/attribute-contains-selector/