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