是<input />表格数据?

时间:2011-03-30 19:09:17

标签: php mysql html xhtml mysql4

从使用 XHTML 1.0 Strict 作为DOCTYPE的角度来看 - XHTML中的输入标记是否会被视为表格数据?

如果,有人可以就有效的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,从我的例子看)。

4 个答案:

答案 0 :(得分:2)

  

<input>表格数据吗?

我将以一个反问题回答这个问题:

  

矩形是正方形吗?

一般来说答案是否定的,尽管在某些情况下答案可能是肯定的。

如果您的输入本质上是表格,则表格中的标记是有意义的。例如,具有特定首选项/注释的用户表将在表中进行语义标记。

包含用于登录的用户名/密码字段的表格不是语义。

最终决定权归你所有。如果您认为可以为表格数据创建一个好的语义参数,那么请务必将其放在表格中。

答案 1 :(得分: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/

答案 2 :(得分: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数据的语义在某种程度上可以解释。关键是你不应该使用表格来设置样式,即使你可以在脑子里找借口,“好像输入有点像表格数据,所以在这里使用表格很酷。”

答案 3 :(得分:0)

您对input表格数据的担忧不应影响您对XHTML 1.0严格有效标记的期望。

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>

我希望有所帮助。