Как найти родительскую форму из элемента?
Я пытаюсь найти родительскую форму из элемента, используя следующий код:
<form id="f1" action="action1.html">
form1 <button id="btn1" onclick="testaction(this); return false;" >test form 1</button>
</form>
<script type="text/javascript" >
function testaction(element) {
var e = $(element.id);
var form = e.parent('form');
alert(form.id); // undefined!!
alert(form.action); // undefined!!
alert(document.forms[0].action); //http://localhost/action1.html
}
</script>
Это должно быть что-то действительно простое.... Спасибо заранее
Ответы
Ответ 1
Проблема, с которой вы сталкиваетесь, заключается в том, что form
является объектом jQuery, а не объектом DOM. Если вы хотите, чтобы это был объект формы, вы сделали бы e.parent('form').get(0)
.
Кроме того, вы неправильно обрабатываете элемент - jQuery принимает селектора id в форме #id
, но вы передали его id
.
Здесь рабочая версия:
function testaction(element) {
var e = $(element);//element not element.id
var form = e.parent('form').get(0);//.get(0) added
alert(form.id); // undefined!!
alert(form.action); // undefined!!
alert(document.forms[0].action); //http://localhost/action1.html
}
Посмотрите на это в действии: http://jsfiddle.net/BTmwq/
EDIT: правописание, ясность
Ответ 2
http://api.jquery.com/closest/ сделает это. Используется как
$('#elem').closest('form');
Ответ 3
Элемент Button имеет свойство формы http://www.w3schools.com/jsref/dom_obj_pushbutton.asp
buttonElement.form
Ответ 4
Бросьте встроенный обработчик событий на борту и оставайтесь здесь ненавязчивым.
$(document).ready(function(){
$('#btn1').bind('click', function(){
var form = $(this).closest('form')[0];
alert(form.id); // defined
alert(form.action); // defined
});
});
Ref.: . closeest(), . bind()
Ответ 5
$(".whatever").parents("form");