2010-08-18 27 views
0

我試過在HTML validator進入以下,但是失敗了,即使我用了「驗證HTML片段」選項驗證:你可以使用合法的HTML來製作表格的一部分嗎?

<table> 
    <form action="foo"> 
    <tr> 
     <td>tables + forms = BOOM</td> 
    </tr> 
    </form> 
</table> 

我想什麼,我想在這裏做的是相當清楚的,但驗證程序似乎告訴我,這是不允許的:(。

如果我想單個表包含多個窗體怎麼辦?我想有很多可能性如何將窗體分成幾種形式,但至少允許tr和/或tbody是兒童的形式似乎是合理的。

使用單獨的表格不會產生相同的效果,因爲列寬可能不會相同。

+0

爲什麼不使用多個表?每個表格一個? – 2010-08-18 23:46:28

回答

2

正如您所見,<form>元素只能完全出現在表格單元格中(<td>),或者完全封裝了<table>。你無法以其他方式驗證; the HTML DTDs都禁止非表格元素作爲<table><tr>中的第一級子元素。

也就是說,即使不驗證,大多數瀏覽器都會明白你要做什麼。

+0

在這種情況下,瀏覽器不理解OP要做什麼。 – Alohci 2010-08-19 00:06:44

+1

OP最初的擔心是關於標記是否驗證:瀏覽器愉快地接受非驗證HTML,包括錯誤嵌套的標記。 – 2010-08-19 00:37:43

1

不幸的是,HTML4指定你不能有一個<form>直接在<table>裏面,但你可以有一個形式爲<td>的孩子,也許嘗試這個:

<table> 
    <tr> 
    <td> 
     <form action="foo"> 
     td + form = SUCCESS! 
     </form> 
    </td> 
    </tr> 
</table> 

(的仍然是在HTML5中,其中<th>可能只包含phrasing elements,而<form>被歸類爲flow element。)

+0

如果你想輸入多個單元格 – allyourcode 2010-08-20 08:50:33

1

看看例如here列出每種元素可以包含的內容。

表很繁瑣:它們只能包含caption?, (col* | colgroup*), ((thead?, tfoot?, tbody+) | (tr+))

表單是'塊內容',所以你可以把它放在任何其內容可以是'塊'的地方,其中包括任何內容可以是'流'的地方,其中包括內部表單元格:所以你可以把一個表單內一個td。

+0

謝謝你的參考,這不起作用。你的第三段對於去混淆規範並沒有太大的幫助,例如看看你用引號括住了多少單詞。 – allyourcode 2010-08-20 08:52:16

+0

@allyourcode我沒有試圖解釋規範,我試圖總結它,或者提及/引用相關部分。 – ChrisW 2010-08-20 09:08:24

相關問題