如何从父窗体向JavaScript传递id
假设我们有这个代码如何从父窗体向JavaScript传递id,javascript,jsf,jsf-2,Javascript,Jsf,Jsf 2,假设我们有这个代码 <h:form id="#{id}"> <h:panelGroup id="#{id}suggestionPanel"> <h:panelGroup> <h:inputText value="#{searchString}" rendered="#{validationId == null}"
<h:form id="#{id}">
<h:panelGroup id="#{id}suggestionPanel">
<h:panelGroup>
<h:inputText value="#{searchString}"
rendered="#{validationId == null}"
id="#{id}search"
onkeyup="autocompleteHandler(this.value)"/>
</h:panelGroup>
</h:panelGroup>
</h:form>
是否有可能将表单的Id传递到名为“autocompleteHandler”的JavaScript方法中,或者通过其他方式获取Id,然后再获取getElementById。您可以始终使用JavaScript的parentNode
var node = myElement;
var form = node.parentNode.parentNode;
在
autocompletedhandler
函数中,只需使用this.form.id
即可获得id
从输入中,您可以在form
属性中获取它所属的表单
例如:
function autocompleteHandler(val) {
alert(this.form.id);
}
每个输入元素都有一个
form
属性,该属性保存对其父表单的引用。调用函数时,您可以将此
传递给回调函数,该函数会将对输入元素的引用传递给回调函数。在回调中,您可以读取所传递元素的form属性,以获取对表单的引用。表单元素将依次具有一个ID属性,该属性保存表单ID
一个简单的例子如下所示:
标记:
<form id="test">
<input type="text" onkeyup="autocompleteHandler(this);" />
</form>
function autocompleteHandler(elm) {
alert(elm.form.id);
}
您好,我想出了一种获取外部表单Id的方法,所以我想与您分享。 这并不限制您使用输入标记或其他东西 javascript看起来像这样
function autocompleteHandler(elem)
{
var x = elem.parentNode;
if(x.nodeName == "FORM")
{
//do something with your form
}
else
{
autocompleteHandler(x);
}
}
请提供有效的JSF代码,以便为您的问题找到真正的解决方案。@LuiggiMendoza以及为什么在您的建议中此代码无效?首先,您不能使用
{someBean.someValue}
分配JSF组件的ID。你至少试过用你提供的代码创建一个JSF页面吗?@LuiggiMendoza你说得不对,我的朋友。我从未将JSF组件的id设置为{someBean.someValue}
,这些都是字符串。在id=”部分,您不会使用“点”,例如它的“#{id}搜索“。id是解析为字符串的elvariable。在你们把这句话传给别人之前,请先阅读一些jsf文档。仅供参考:一个elvariable声明如下:
多么笨拙。为什么不使用elem.form
来获得Christofer和Florian的正确答案?