1

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

如果没有,有人可以就我可以与 MySQL 和 PHP 结合使用的有效 XHTML(Strict 1.0)代码给我一些好的建议吗?我需要做的是在另一个输入字段的右侧有一个输入字段(但是,正确的输入字段并不总是需要打印在页面上),所以目前我只能想出这个:

<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

4 回答 4

2

<input>表格数据吗?

我将用一个反问来回答这个问题:

长方形是正方形吗

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

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

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

最终决定权在你。如果你觉得你可以为表格数据提出一个很好的语义论证,那么一定要把它放在一个表格中。

于 2011-03-30T19:14:25.577 回答
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/

于 2011-03-30T19:27:02.580 回答
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 数据的语义在某种程度上可以解释。关键是你不应该使用表格来进行样式设置,即使你可以在脑海中找一个借口,比如“输入有点像表格数据,所以在这里使用表格很酷”。

于 2011-03-30T19:26:46.357 回答
0

您对是否是表格数据的担忧input不应该影响您对 XHTML 1.0 Strict 有效标记的渴望。

aninput是否是表格形式是语义问题,而不是验证问题。不要误解我的意思,语义很重要——使用的标记应该描述它包含的内容。但是,语义在很大程度上与代码是否会验证无关。

对于 an input,验证的要求是它 (1) 在<form>标签内和 (2) 在块级元素内,例如 a <p>or<table>或任何其他块级元素。

另一个需要解决的问题是可访问性——表格和表单对于屏幕阅读器和键盘控制都存在许多可访问性挑战。屏幕阅读器解析表格的方式可能不是您想要消化内容的方式,因此用户最终可能会听到乱序阅读的项目,因此您的页面对他们来说将变得毫无意义。使用键盘控件在表单元素之间切换也可能会受到所用标记的影响,因为表格可能要求元素以不同于您希望用户在页面中消化它们的顺序放置在标记中。

就个人而言,我不认为表单是表格数据,并且在为它们创建标记时不要使用表格。通常,我使用无序列表。一个通用的例子可能是:

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

我希望这会有所帮助。

于 2011-03-30T19:29:22.367 回答