为什么这个<p> </p>在这个HTML5文档中不合适(由Django呈现)?

时间:2012-04-21 09:15:24

标签: html5 html-validation

缩进是由Firefox的源代码创建的。 Firefox和HTML验证器都说</p>是错误的。但我无法弄清楚原因。

<p>
  <ul class="errorlist">
    <li>This field is required.</li>
  </ul>
  <label for="id_creator">Creator:</label>
  <select onchange="Dajaxice.doors.orders_create_creator_changed(fill_other_fields, {&#39;creator_pk&#39;: this.options[this.selectedIndex].value})" name="creator" id="id_creator">
    <option value="" selected="selected">Select a user</option>
    <option value="9">Amy the Tenant</option>
    <option value="6">Alex the Tenant</option>
    <option value="3">Bob the Property Manager</option>
  </select>
</p>

另一方面,当Django没有呈现错误消息时,关闭</p&gt;标签有效。这是代码:

<p>
  <label for="id_creator">Creator:</label>
  <select onchange="Dajaxice.doors.orders_create_creator_changed(fill_other_fields, {&#39;creator_pk&#39;: this.options[this.selectedIndex].value})" name="creator" id="id_creator">
    <option value="" selected="selected">Select a user</option>
    <option value="9">Amy the Tenant</option>
    <option value="6">Alex the Tenant</option>
    <option value="3">Bob the Property Manager</option>
  </select>
</p>

2 个答案:

答案 0 :(得分:3)

<p>不能包含任何块级元素(see MDN docu)。

另一方面,

<ul>是块级元素(MDN)。

您的代码可能“正确”显示的原因是大多数html5解析器在遇到</p>内的块级元素时会插入结束<p>。插入此内容后,您的实际</p>没有随附的开头<p>,因此此时无效。

答案 1 :(得分:1)

<ul />是块级别,因此无法保存在<p />