Как получить родительскую форму ввода?


мне нужно получить ссылку на родительскую форму ввода, когда у меня есть только ссылка на этот вход. Возможно ли это с помощью 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"));
10 87

10 ответов:

собственные элементы 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'));

кроме того, см. Эту ссылку MDN на form собственность HTMLInputElement:

каждый вход имеет 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.
}

Мне нужно было использовать элемент.attr ('форма') вместо элемента.форма

Я использую firefox на Fedora 12

Если вы используете jQuery и имеете дескриптор для любого элемента формы, вам нужно получить(0) элемент перед использованием .форма

var my_form = $('input[name=first_name]').get(0).form;
function doSomething(element) {
  var form = element.form;
}

и в html, вам нужно найти этот элемент, и добавить атрибут "форма" для подключения к этой форме, пожалуйста, обратитесь к http://www.w3schools.com/tags/att_input_form.asp но эта форма аттр не поддерживает IE, для ie, вам нужно передать идентификатор формы напрямую.

просто:

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

будет ли это работать? (оставляя действие пустым отправляет форму обратно к себе тоже, не так ли?)

<form action="">
<select name="memberid" onchange="this.form.submit();">
<option value="1">member 1</option>
<option value="2">member 2</option>
</select>

" это "будет выбран элемент,.форма будет его родительской формой. Верно?