Как получить форму родителя ввода?
Мне нужно получить ссылку на родительский элемент FORM INPUT, когда у меня есть только ссылка на этот INPUT. Возможно ли это с помощью 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"));
Ответы
Ответ 1
Внутренние элементы 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
:
Ответ 2
Каждый вход имеет свойство form
, которое указывает на форму, к которой принадлежит вход, и просто:
function doSomething(element) {
var form = element.form;
}
Ответ 3
Я использую немного jQuery и javascript старого стиля - меньше кода
$($(this)[0].form)
Это полная ссылка на форму, содержащую элемент
Ответ 4
Использование jQuery:
function doSomething(element) {
var form = $(element).closest("form").get().
//do something with the form.
}
Ответ 5
Мне нужно было использовать element.attr('form') вместо element.form
Я использую firefox на Fedora 12
Ответ 6
Если вы используете jQuery и имеете дескриптор для любого элемента формы, вам нужно получить (0) элемент перед использованием .form
var my_form = $('input[name=first_name]').get(0).form;
Ответ 7
function doSomething(element) {
var form = element.form;
}
и в html вам нужно найти этот элемент и добавить атрибут "form" для подключения к этой форме, пожалуйста, обратитесь к http://www.w3schools.com/tags/att_input_form.asp
но эта форма attr не поддерживает IE, т.е. вам нужно передать форму id напрямую.
Ответ 8
просто как:
alert( $(this.form).attr('name') );
Ответ 9
И еще один....
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
Ответ 10
будет ли это работать? (оставляя действие пустое, возвращает форму обратно к себе тоже, верно?)
<form action="">
<select name="memberid" onchange="this.form.submit();">
<option value="1">member 1</option>
<option value="2">member 2</option>
</select>
"this" будет элементом выбора .form будет его родительской формой. Правильно?