2010-12-23 49 views
10

我可以將<form>標籤放在另一個<form>標籤內嗎?我可以在其他表單標籤中嵌入窗體標籤嗎?

例如:

<form> 
    <form> 
    </form> 
</form> 
+1

你的意思是一個表單元素;-) – 2010-12-23 14:16:17

+0

亞我的意思是表單標籤,感謝我得到回答的 – Navruk 2010-12-24 13:21:23

+0

可能重複[有效期是有內另一個HTML表單中的HTML表單?](http://stackoverflow.com/questions/555928/is-it-valid-to-has-a-html-form-inside-another-html-form) – 2015-06-04 23:39:44

回答

17

否,嵌套形式是被禁止的。


這在HTML表示4.01的DTD爲:

<!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM) -- interactive form --> 

- http://www.w3.org/TR/html4/interact/forms.html#h-17.3

這意味着一種形式有一個強制性的開始標記,強制結束標籤,並可以包含任何東西在%block或SCRIPT中,除了其他FORM。


XML的DTD是表現能力不如SGML的DTD所以在XHTML此規則僅在說明書中的人類可讀的文本指定:

形式必須不包含其它形式的元件。

- http://www.w3.org/TR/xhtml1/#prohibitions


HTML 5不是一個SGML應用程序,沒有語言的公務機可讀描述。它還表示這個規則文本:

內容模型:

流量的內容,但沒有表單元素後裔。

- http://www.w3.org/TR/html5/forms.html#the-form-element

+0

感謝您的回答。 – Navruk 2010-12-24 13:21:50

0

沒有,使用<fieldset>如果要分割的形式。一些瀏覽器可能會解析它(沒有測試過),但根據W3標準,不允許在其他表單中使用表單。

+0

感謝您的回答 – Navruk 2010-12-24 13:22:07

+0

這需要一些闡述... – Cerin 2014-03-26 16:56:45

1

根據規範不允許嵌套表單(我不確定嘗試時會出現什麼樣的行爲,我沒有嘗試過)。

但是,在a previous question中有一些關於該主題的有趣討論。

1

你不能嵌套它們,但你可以將元素分組... ...有一個專門用於這個的機制,the <fieldset> element,用於對控件/標籤進行分組......並且在HTML5中將它與特定的表單關聯,禁用內容等

0

適用於XHTML 1.0 Strict。

我甚至通過粘貼下面的代碼來驗證通過http://validator.w3.org/check

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <title>Markup Test</title> 
    <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" /> 
    </head> 
    <body> 
    <h1>Markup Test</h1> 
    <p> 
     This doc contains a form with a nested form and validates at 
     <a title="Validate using W3C Markup Validation Service" href="http://validator.w3.org/check?uri=referer"> 
     http://validator.w3.org/ 
     </a> 
    </p> 
    <form action="#"> 
     <div> 
     <form action="#"> 
     </form> 
     </div> 
    </form> 
    </body> 
</html> 

無論其下面昆汀是正確的:我測試和嵌套形式開口結束標記被忽略。在子表單標籤之前,之內和之後出現的表單輸入元素被視爲父表單的成員,包括提交按鈕。從子表單中引用this.form的JavaScript引用父表單。如果你給孩子一個身份證,並通過getElementById找回,那麼你會得到一個元素,但.submit()什麼都不做。它基本上是一個帶有垃圾標籤的表單(父項)。

-1

直接在表格內是不允許的。你所有的javascript都無法運行,預期的行爲將不會在那裏。

但是,你可以試試這個:

<form name ="1st form"> 
<...> 
<div> <form id="dummy"></form></div> 
<...> 
<form name = "2nd form"> 
</form> 
<...> 
</form> 

你需要在你打算使用2種形式之間創建一個虛擬的形式。 1注意,1st Form和虛擬表單需要在它們之間有一些標籤。否則這將無法正常工作。

相關問題