【问题标题】:HTML Validator giving me error on form input type, element not allowed in contextHTML Validator 给我表单输入类型错误,上下文中不允许的元素
【发布时间】:2009-01-27 18:29:08
【问题描述】:

这是我的代码,HTML 验证器给我一个错误:

<input type="text" id="search" name="keywords" />
<input type="submit" value="Search" name="Submit" />

这是 HTML Validator 中的错误屏幕截图 (full size):

这是我收到的错误消息:

所提及的元素不允许出现在您放置它的上下文中;其他提到的元素是唯一允许的并且可以包含提到的元素的元素。这可能意味着您需要一个包含元素,或者您可能忘记关闭前一个元素。

HTML 文件的正文中有两种类型的元素,内联元素和块元素。此消息的一个可能原因是您试图将块级元素(例如“

”或“

”)放入内联元素(例如“”、“ ",或 "")。

在下面的示例中, 标签是一个内联标签,它只能包含其他内联标签。但是

标签是一个块标签。所以

标签不能包含在 标签中。

这是它来自的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>

【问题讨论】:

    标签: html w3c-validation


    【解决方案1】:

    在 HTML4 / XHTML1 中,您不能将内联内容直接放入 form 元素中。而 HTML5 则提升了这一要求。

    因此,如果验证错误困扰您(还有更糟糕的事情......),请在最后两个 inputs 周围添加 pdiv 元素。

    【讨论】:

    • 很惊讶这没有得到支持。这是正确的答案。表单内不允许使用内联元素。因此,只需将输入包含在 div 中即可让验证器满意。
    • 另一点是表格可以直接在表单中。由于 table 既不是块级元素也不是内联元素,验证器显然不能肯定地说“不”。
    【解决方案2】:

    您没有提到该验证器针对哪个 HTML 版本进行验证。假设它不是 XTHML,输入标签不被关闭。使用“/>”意味着您提供了一个结束标记。

    欲了解更多信息:Reference

    但是,此限制不适用于要求关闭所有标签的 XHTML。 (或者我应该说所有标签都应该关闭的限制只适用于 XHTML);-)

    【讨论】:

    • 在 XHTML 中,它用于不需要结束标签的标签(img、input 等)。
    • 是的,我在事后添加了该注释。
    【解决方案3】:

    我认为问题在于输入位于&lt;li&gt; 元素中,默认情况下它不是block-level element。这通常是这种“脱离上下文”错误的原因。它根本不会伤害您的页面,而只是阻止它进行验证。

    【讨论】:

    • 真的吗?我一直认为 li 是块级元素。
    【解决方案4】:

    你使用的是 HTML 还是 XHTML

    在 HTML 中,&lt;input&gt; 标记没有结尾 标记。

    在 XHTML 中,&lt;input&gt; 标签必须是 正确关闭。

    http://www.w3schools.com/tags/tag_input.asp

    【讨论】:

      【解决方案5】:

      在您提供的代码之前是否有未闭合的内联元素?内联元素列表:http://htmlhelp.com/reference/html40/inline.html(用于 html4)

      【讨论】:

        【解决方案6】:

        例如。 [代码]

        [/代码]

        将输入标签包裹在一个

        标签

        并确保像上面一样自行关闭输入标签。

        这应该可以验证。

        标记

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-12-08
          • 1970-01-01
          • 2019-05-20
          • 1970-01-01
          • 1970-01-01
          • 2022-01-23
          • 1970-01-01
          相关资源
          最近更新 更多