web-dev-qa-db-ja.com

入力の包含形式を取得する方法は?

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"));
98
Ropstah

入力であるネイティブ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'));

また、formHTMLInputElementプロパティに関する次のMDNリンクを参照してください。

172

すべての入力には、入力が属するフォームを指すformプロパティがあるため、単純に次のようになります。

function doSomething(element) {
  var form = element.form;
}
37
Gareth

私は少しのjQueryと古いスタイルのjavascriptを使用します-少ないコード

$($(this)[0].form) 

これは、要素を含むフォームへの完全な参照です

4
Nigel Francois

jQuery を使用:

function doSomething(element) {
    var form = $(element).closest("form").get().
    //do something with the form.
}
3
yfeldblum

element.formの代わりにelement.attr('form')を使用する必要がありました。

Fedora 12でFirefoxを使用しています。

2
Nikov
function doSomething(element) {
  var form = element.form;
}

そしてhtmlで、その要素を見つけ、そのフォームに接続するための属性「フォーム」を追加する必要があります。 http://www.w3schools.com/tags/att_input_form.asp を参照してくださいただし、このフォームattrはIEをサポートしていません。つまり、フォームIDを直接渡す必要があります。

2
阳光Emi

JQueryを使用し、任意のフォーム要素へのハンドルを持っている場合、.formを使用する前に要素をget(0)する必要があります

var my_form = $('input[name=first_name]').get(0).form;
2
Steven Wright

単純に:

alert( $(this.form).attr('name') );
0
sadnix

そしてもう一つ....

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
0
Jadeye