Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从父窗体向JavaScript传递id_Javascript_Jsf_Jsf 2 - Fatal编程技术网

如何从父窗体向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的正确答案?