2010-08-30 13 views
18

aşağıda eleman kullanarak kodundan ana formunu bulmaya çalışıyorum:Öğeden ana form nasıl bulunur?

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

Gerçekten basit bir şey olmalı .... Teşekkür peşin

+2

'. anlık atası. –

+3

Sadece $ (element.id) 'yerine' $ (element) 'olmalıdır. – kennytm

+0

'btn1.form' hakkında ne dersiniz? – Sergei

cevap

12

yaşadığınız sorun form bir jQuery nesnesi değil, bir DOM nesnesi olmasıdır. Form nesnesi olmasını istiyorsanız, e.parent('form').get(0) yaparsınız.

Ayrıca, öğeyi yanlış işleme alıyorsunuz - jQuery, #id formundaki kimlik seçicilerini alıyor ancak siz bunu id ilettiniz.

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 
} 

eylem bunun için bu bakınız:: http://jsfiddle.net/BTmwq/

DÜZENLEME: Burada

bir çalışma versiyonu yazım, netlik

+0

Değişken 'form' undefined 'burada değil. JAndy'nin çözümü işe yaradı. – Roland

38

http://api.jquery.com/closest/ bunu yapacağız. Bu

$('#elem').closest('form'); 
+4

En iyi çözüm, ebeveyn() 'in aksine bir eşleşme bulduktan sonra durur –

+0

'btn1.form' en iyi nasıl? – Sergei

0
$(".whatever").parents("form"); 
+3

en yakın(), bir eşleşme bulunduğunda durduğundan çok daha iyi bir çözümdür –

6

gibi kullanılmış gemiye satır içi olay işleyicisi atın ve burada mütevazi muaftır.

$(document).ready(function(){ 
    $('#btn1').bind('click', function(){ 
     var form = $(this).closest('form')[0]; 

     alert(form.id); // defined 
     alert(form.action); // defined 
    }); 
}); 

Ref .: .closest(), .bind()

+0

'en yakın (" form ") [0]' doğru bir öğeyi döndürerek doğru çözümdü. Ebeveyn ('form'). get (0) '' undefined' döndürdü! – Roland

İlgili konular