XHTML严格验证

时间:2009-03-08 12:43:46

标签: html validation forms xhtml

真的有2个问题。为什么这些代码不会对XHTML 1.0 Strict进行验证。 XHTML 1.0 Strict是项目要求。

第2行导致问题

  

文档类型不允许元素“输入”;缺少“p”,“h1”,“h2”,“h3”,“h4”,“h5”,“h6”,“div”,“pre”,“address”,“fieldset”,“ins”中的一个,“del”start-tag。

<form enctype="multipart/form-data" action="upload.php" method="post">
<input type="hidden" name="max_file_size" value="1048576" />
<table><tr><td><b>Image location: </b></td><td><input type="file" name="file" size="30"/></td></tr>
<tr><td><b>Caption: </b></td><td><input type="text" name="caption" size="30"/></td></tr>
<tr><td><input name="submit" type="submit" value="Upload" /></td><td>*(png, jpeg, jpg and gif files &lt; 1mb)</td></tr></table>
</form>

对于第2行和第3行

  

文档类型不允许元素“输入”;缺少“p”,“h1”,“h2”,“h3”,“h4”,“h5”,“h6”,“div”,“pre”,“address”,“fieldset”,“ins”中的一个,“del”start-tag。

<form action="#">
    <input type="text" size="30" name="query"  value="" onkeypress="return disableEnterKey(event)" />
    <input type="button" name="searchButton" value="Search" onclick="loadResults(this.form)" />
</form>

3 个答案:

答案 0 :(得分:6)

您需要将表单输入放在&lt; fieldset&gt;中或其他块标记。 &LT;输入&GT;元素是内联表单元素,内联元素可能不会出现在块上下文中。尝试

<fieldset>
   <input ... />
<fieldset>

答案 1 :(得分:5)

如消息所示,您不能将input元素作为表单的直接子元素。它必须包含在“p”,“h1”,“h2”,“h3”,“h4”,“h5”,“h6”,“div”,“pre”,“address”,“fieldset”中的一个中,“ins”,“del”。

最简单的修复可能是将它们放在“p”,“div”或“fieldset”元素中。

答案 2 :(得分:2)

XHTML strict要求您不要将输入元素直接放在表单中 - 您可以通过将输入放在验证器建议的任何块级元素中来修复错误。

尝试这样的事情:

<form action="#">
    <div>
        <input type="text" size="30" name="query"  value="" onkeypress="return disableEnterKey(event)" />
        <input type="button" name="searchButton" value="Search" onclick="loadResults(this.form)" />
    </div>
</form>