让我们说我们有这个代码
<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>
是否有可能将名为“autocompleteHandler”的JavaScript方法传递给表单的Id,或者通过其他方式获取Id,然后获取getElementById。
答案 0 :(得分:4)
每个input元素都有一个form
属性,该属性包含对其父窗体的引用。调用函数时,可以传递this
,该函数将传递对input元素的引用,传递给回调函数。在回调中,您可以读取传递元素的form-property,以获取对表单的引用。表单元素将依次具有ID属性,其中包含表单ID。
一个简单的例子看起来像这样:
<强>标记:强>
<form id="test">
<input type="text" onkeyup="autocompleteHandler(this);" />
</form>
<强> JavaScript的:强>
function autocompleteHandler(elm) {
alert(elm.form.id);
}
答案 1 :(得分:0)
您始终可以使用javascript parentNode
var node = myElement;
var form = node.parentNode.parentNode;
答案 2 :(得分:0)
在autocompleteHandler
功能中,您只需使用this.form.id
即可获取ID。
从输入中,您可以在form
属性中获取它所属的表单。
示例:
function autocompleteHandler(val) {
alert(this.form.id);
}
答案 3 :(得分:0)
您好我找到了如何获取外部表单的ID的方法,所以我想与您分享。 这不会将您限制为输入标记或其他内容。
javascript看起来像这样。
function autocompleteHandler(elem)
{
var x = elem.parentNode;
if(x.nodeName == "FORM")
{
//do something with your form
}
else
{
autocompleteHandler(x);
}
}