INPUTへの参照のみがある場合、INPUTのFORM親への参照を取得する必要があります。これはJavaScriptで可能ですか?必要に応じてjQueryを使用します。
function doSomething(element) {
//element is input object
//how to get reference to form?
}
これは機能しません:
var form = $(element).parents('form:first');
alert($(form).attr("name"));
入力であるネイティブDOM要素には、所属するフォームを指すform
属性もあります。
var form = element.form;
alert($(form).attr('name'));
w3schools によると、入力フィールドの.form
プロパティは、IE 4.0 +、Firefox 1.0 +、Opera 9.0+でサポートされています。 jQueryが保証するさらに多くのブラウザなので、これに固執する必要があります。
これが異なるタイプの要素(<input>
ではない)である場合、 closest
で最も近い親を見つけることができます。
var $form = $(element).closest('form');
alert($form.attr('name'));
また、form
のHTMLInputElement
プロパティに関する次のMDNリンクを参照してください。
すべての入力には、入力が属するフォームを指すform
プロパティがあるため、単純に次のようになります。
function doSomething(element) {
var form = element.form;
}
私は少しのjQueryと古いスタイルのjavascriptを使用します-少ないコード
$($(this)[0].form)
これは、要素を含むフォームへの完全な参照です
jQuery を使用:
function doSomething(element) {
var form = $(element).closest("form").get().
//do something with the form.
}
element.form
の代わりにelement.attr('form')
を使用する必要がありました。
Fedora 12でFirefoxを使用しています。
function doSomething(element) {
var form = element.form;
}
そしてhtmlで、その要素を見つけ、そのフォームに接続するための属性「フォーム」を追加する必要があります。 http://www.w3schools.com/tags/att_input_form.asp を参照してくださいただし、このフォームattrはIEをサポートしていません。つまり、フォームIDを直接渡す必要があります。
JQueryを使用し、任意のフォーム要素へのハンドルを持っている場合、.formを使用する前に要素をget(0)する必要があります
var my_form = $('input[name=first_name]').get(0).form;
単純に:
alert( $(this.form).attr('name') );
そしてもう一つ....
var _e = $(e.target); // e being the event triggered
var element = _e.parent(); // the element the event was triggered on
console.log("_E " + element.context); // [object HTMLInputElement]
console.log("_E FORM " + element.context.form); // [object HTMLFormElement]
console.log("_E FORM " + element.context.form.id); // form id