-1

このコードがあるとしましょう

<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メソッドに渡すか、getElementById以外の方法でIDを取得する可能性はありますか。

4

4 に答える 4

4

すべての入力要素には、formその親フォームへの参照を保持するプロパティがあります。thisinput要素への参照を渡す関数を呼び出すときに、callback関数に渡すことができます。コールバック内で、渡された要素のフォームプロパティを読み取って、フォームへの参照を取得できます。次に、フォーム要素には、フォームIDを保持するIDプロパティがあります。

簡単な例は次のようになります。

マークアップ:

<form id="test">
    <input type="text" onkeyup="autocompleteHandler(this);" />
</form>​

JavaScript:

function autocompleteHandler(elm) {
    alert(elm.form.id);
}​

デモ

于 2012-12-26T15:18:06.377 に答える
0

関数ではautocompleteHandler、を使用するだけでIDを取得できますthis.form.id

入力から、formプロパティで属するフォームを取得できます。

例:

function autocompleteHandler(val) {
    alert(this.form.id);
}
于 2012-12-26T15:16:48.453 に答える
0

JavaScriptのparentNodeはいつでも使用できます

var node = myElement;
var form = node.parentNode.parentNode;
于 2012-12-26T15:14:51.023 に答える
0

こんにちは私は外側のフォームのIDを取得する方法を見つけたので、それをあなたと共有したいと思います。これは、入力タグなどに限定されるものではありません。

javascriptは次のようになります。

function autocompleteHandler(elem)
{       
    var x = elem.parentNode;
    if(x.nodeName == "FORM") 
    {
        //do something with your form
    }
    else
    {
        autocompleteHandler(x);
    }
}
于 2012-12-27T10:38:01.113 に答える