如何从父窗体传递id到JavaScript

时间:2012-12-26 15:11:51

标签: javascript jsf jsf-2

让我们说我们有这个代码

<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。

4 个答案:

答案 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);
}​

DEMO

答案 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);
    }
}