Подтвердить что ты не робот

Как найти родительскую форму из элемента?

Я пытаюсь найти родительскую форму из элемента, используя следующий код:

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

Это должно быть что-то действительно простое.... Спасибо заранее

4b9b3361

Ответ 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: правописание, ясность

Ответ 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");