2014-03-19 78 views
0

我在表单中有一个元素,它们之间可能有很多元素。有一个变量指向我的元素,我想知道如何在变量中获得父窗体。找到包含元素的表单?

EG:

<form> 
    <div> 
    //Element 
    </div> 
</div> 

因此,有var element指着里面的div元素,我怎么能得到包含它的形式?

我想循环父母直到找到一个表单,但我想知道是否有更简单的方法。我怎样才能获得表单元素?

+0

最简单的方法是使用jQuery'.closest()'方法,它在纯JavaScript中完全相同:在循环中向上查找树并找到第一个匹配的元素。 – VisioN

+0

我没有使用jQuery。所以我应该循环到父母?谢谢 – lisovaccaro

+0

正是如此。没有其他方式我害怕。 – VisioN

回答

0

Javascript函数来实现这一点:

function ParentForm(element){ 
    var parent = elem.parentNode; 
    if(parent && parent.tagName != 'FORM'){ 
    parent = findParentForm(parent); 
    } 
    return parent; 
} 
var myForm = parentForm(myElement) 
2

这是很简单的做到这一点:

var lookup = element; 
while(lookup && lookup.nodeName != "FORM") lookup = lookup.parentNode; 
if(lookup) { 
    // lookup if your form 
} 

我有这个在我的项目的功能,被称为“findParent”,接受一个回调来测试,如果该元素是我要找的人。

1

随着HTML5这将是

<input element>.form 

fiddle

HTML5 - 4.10 Forms
形状相关联的元件,默认情况下,与相关联的它最近的祖先形式元素(如下所述),但是,如果它是re​​as可以有一个表单属性指定来覆盖这个

+1

+1漂亮!但是它不适用于非输入元素:http://jsfiddle.net/7xSvR/。 – VisioN

+0

你说得对。我假定所提到的// Element是一个输入元素。对于其他任何你将不得不使用已经提到的DOM遍历。 – Andreas

相关问题