这是我在HTML Validator上给出错误的代码:
<input type="text" id="search" name="keywords" />
<input type="submit" value="Search" name="Submit" />
以下是HTML Validator中错误的屏幕截图(full size):
这是我收到的错误消息:
上述元素不允许出现在您放置它的上下文中;其他提到的元素是唯一允许存在的元素,并且可以包含所提到的元素。这可能意味着您需要一个包含元素,或者您可能忘记关闭前一个元素。
HTML文件正文中有两种类型的元素:内联元素和块元素。此消息的一个可能原因是您尝试将块级元素(例如“&lt; p&gt;”或“&lt; table&gt;”)放入内联元素(例如“&lt; a&gt;”,“ &lt; span&gt;“或”&lt; font&gt;“)。
在以下示例中,&lt; font&gt; tag是内联标记,只能包含其他内联标记。但是&lt; p&gt; tag是块标记。所以&lt; p&gt;标签不能包含在&lt; font&gt;中标签
这是html的块,来自:
<li>
<form method="post" action="http://site.com/" >
<div class='hiddenFields'>
<input type="hidden" name="ACT" value="19" />
<input type="hidden" name="XID" value="90ee0994104d8ba87b6ef9b43e998fc8c89e0d9f" />
<input type="hidden" name="RP" value="search/results" />
<input type="hidden" name="NRP" value="" />
<input type="hidden" name="RES" value="" />
<input type="hidden" name="status" value="" />
<input type="hidden" name="weblog" value="forms|alumni_distinguished|housing_faq|international_faq" />
<input type="hidden" name="search_in" value="everywhere" />
<input type="hidden" name="where" value="all" />
<input type="hidden" name="site_id" value="1" />
</div>
<input type="text" id="search" name="keywords" /> <input type="submit" value="Search" name="Submit" />
</form>
</li>
答案 0 :(得分:10)
在HTML4 / XHTML1中,您无法将内联内容直接放入form
元素中。另一方面,HTML5提升了这一要求。
因此,如果验证错误困扰您(有更糟糕的事情......),请在最后两个p
周围添加div
或input
元素。
答案 1 :(得分:1)
您尚未提及此验证程序验证的HTML版本。假设它不是XTHML,则不关闭输入标记。使用“/&gt;”暗示您正在提供结束标记。
有关详细信息:Reference
但是,对于要求关闭所有标记的XHTML,此限制不适用。 (或者我应该说所有标签应该关闭的限制仅适用于XHTML); - )
答案 2 :(得分:0)
我认为问题在于输入位于<li>
元素中,默认情况下不是block-level element。这通常是导致此类“上下文”错误的原因。它根本不会伤害你的页面,只是不让它验证。
答案 3 :(得分:0)
您使用的是HTML还是XHTML
在HTML中,
<input>
标记没有结束 标签在XHTML中,
<input>
标记必须是 正确关闭。
答案 4 :(得分:0)
在您提供的代码之前是否有未闭合的内联元素?内联元素列表:http://htmlhelp.com/reference/html40/inline.html(对于html4)
答案 5 :(得分:0)
例如。 [代码]
[/代码]
将输入标记包装在
标记
中,并确保自动关闭输入标记,如上所述。
这应该验证。
标记