为什么XHTML Strict验证器不允许<input />,<a> inside a form?</a>

时间:2011-07-05 21:00:51

标签: xhtml validation

此代码未验证。这对我来说是违反直觉的。输入属于正确吗?然而,我得到一个表单中的每个元素的验证错误 - 输入,输入,a,a - 为此效果:

看起来很荒谬,将它包装在一个字段集中,然后添加CSS来取出字段集框。

  

第37行,第91栏:文件类型   这里不允许元素“输入”;   缺少“p”,“h1”,“h2”,“h3”之一,   “h4”,“h5”,“h6”,“div”,“pre”,   “地址”,“字段集”,“ins”,“del”   起始标签

  <form id="f3"method="post"action="interface_add.php">
    <input onkeydown="this.value=''"class="te3"type="text"name="f3a"value="title"/>
    <input onkeydown="this.value=''"class="te3"type="text"name="f3b"value="url"/>
    <a id="f3c"class='but'href="javascript:void(0)"onclick="interface_add()">Add</a>
    <a id="f3d"class='but'href="javascript:void(0)"onclick="interface_delete()">Delete</a>
  </form>

3 个答案:

答案 0 :(得分:2)

强烈建议(严格要求使用)在创建表单时使用<fieldset>。您还应该包含<legend>

但你为什么要真的这样做呢?可访问性。屏幕阅读器读取此信息,以便用户知道他们应该在宏计划中提供什么信息。我很确定Section 508也需要使用它。有人认为,联邦法律不适用于私人网站,而是tell that to Target,他们因可访问性问题而被起诉。

实际上,包含它并没有伤害任何东西。你可以按照自己的方式设计它。

答案 1 :(得分:0)

嗯,看起来很荒谬,但就是这样。您可以随时向W3C小组提出投诉。因此,将这些输入包装到div,fieldsets,paragraph或其他内容中以使验证器满意并将这个漂亮的XHTML严格徽标放到您的站点: - )

答案 2 :(得分:0)

我认为这表明这些控件不应该直接采用某种形式,而应该采用其中一种形式,即:

<form ...>
    <p>
        <input ... />
    </p>
</form>