2011-03-30 25 views
1

從使用XHTML 1.0 Strict作爲DOCTYPE的角度來看,XHTML中的輸入標籤會被視爲表格數據嗎?是<input>表格數據?

如果不是,有人能給我一些關於有效的XHTML(嚴格1.0)代碼的好建議,我可以結合使用MySQL和PHP嗎?我需要做的是在另一個輸入字段右邊有一個輸入字段(但是,正確的輸入字段並不總是需要在頁面上打印),所以目前我只能想出這個:

<table> 
    <tr> 
     <td><input type="text" value="First column"></td> 
     <td>...</td> 
     <td>...</td> 
    </tr> 
    <?php if(!empty($column2)){ echo '<tr><td><input type="text" value="Second column"></td></tr>'; } ?> 
</table> 

那麼,還有其他想法嗎?我很感謝您的任何建議!我還需要提到的是,我需要在每列上面都有標題(不是每個輸入字段,而是讓我們說每個tr,從我的例子看)。

+0

我看不到''代碼中的任何地方...... – Neal 2011-03-30 19:14:09

+0

啊,好吧,想象一下,我寫了而不是「第一/第二列」。 – Nisto 2011-03-30 19:15:27

+0

我認爲你在列與行混淆。在你的代碼中,輸入是在不同的行中,而不是列。 – 2011-03-30 20:01:30

回答

0

您對input是否爲表格數據的擔憂不應影響您對XHTML 1.0 Strict有效標記的期望。

input是否是表格式是一個語義問題,而不是驗證問題。不要誤解我的意思,語義非常重要 - 所使用的標記應該描述它包含的內容。但是,語義與代碼是否會驗證很大程度上無關。

對於input,爲了驗證的要求是,它(1)是一個<form>標籤內,(2)是一個塊級元素內諸如<p><table>或任何其他塊級元素。

另一個值得關注的問題是可訪問性 - 表格和表單對於屏幕閱讀器和鍵盤控制都有許多可訪問性方面的挑戰。屏幕閱讀器解析表格的方式可能並不是您想要消化內容的方式,因此用戶可能會聽到無意中讀取的內容,因此您的頁面對他們而言將變得毫無意義。使用鍵盤控件在表單元素之間選擇標籤也可能會受到所用標記的影響,因爲表格可能需要以不同於您希望用戶在頁面中摘錄它們的順序放置元素的標記。

個人而言,我不認爲表單數據是表格數據,並且在創建標記時不使用表格。通常,我使用無序列表。一個通用的例子可能是:

<form> 
    <fieldset> 
    <ul> 
     <li> 
     <label for="item">Item 1</label> 
     <input type="text" name="item" id="item" /> 
     </li> 
     ... 
    </ul> 
    </fieldset> 
</form> 

我希望有幫助。

+0

fieldset標籤爲我做了!我肯定錯過了這個標籤。接受這個答案。謝謝你,RussellUresti! – Nisto 2011-03-30 22:06:55

2

<input>表格數據?

我會回答這個問題用一個反問:

是一個長方形的方?

一般來說,答案是否定的,雖然有些情況下答案可能是肯定的。

如果您的輸入是自然表格,表格中的標記是有意義的。例如,具有特定偏好/註釋的用戶表格將在語義上標記在表格中。

包含用於登錄的用戶名/密碼字段的表是而不是語義。

最後的決定是你的。如果你覺得你可以爲表格中的數據提供一個很好的語義參數,那麼一定要把它放在一個表格中。

0

你應該能夠做同樣的事情的div:

<div style="overflow: hidden;"> 
    <div style="float: left;"><input value="First Column" /></div> 
    <div condition="exists:column2" style="float: left;"> 
     <input attributes="value column2" /> 
    </div> 
</div> 

我認爲輸入數據和表格數據無關彼此,雖然他們不一定反對立場。 xhtml數據的語義在某種程度上可以解釋。關鍵是你不應該使用表格進行造型,即使你可以在你的腦海裏找藉口,比如「輸入有點像表格數據,所以在這裏使用表格很酷。」

1

另一個輸入字段右邊的輸入字段?

嗯,讓我看看...這個?

<div> 
    <input> <input> 
</div> 

現場演示:http://jsfiddle.net/dWPfx/1/


更新:與字幕:

<table> 
    <tr> 
     <th>Name:</th> 
     <th>Surname:</th> 
    </tr> 
    <tr> 
     <td><input></td> 
     <td><input></td> 
    </tr> 
</table> 

現場演示:http://jsfiddle.net/dWPfx/2/

+0

我可能不完全清楚。但是我還需要在輸入字段上方有一個標題。 – Nisto 2011-03-30 19:40:25

+0

@Nisto在這種情況下,您可以使用TABLE。我會用代碼更新我的答案... – 2011-03-30 19:45:05