2014-03-19 126 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

相關問題