为什么这会在W3c html验证中出错?我正在使用HTML 4.01 Strict doctype.
<form method="get" action="/search" id="search">
<input type="text" value="search" maxlength="80" class="textbox" >
</form>
Run Code Online (Sandbox Code Playgroud)
这不是吗?
<form method="get" action="/search" id="search">
<div>
<input type="text" value="search" maxlength="80" class="textbox" >
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
这是错误的
文档类型不允许元素"INPUT"在这里; 缺少"P","H1","H2","H3","H4","H5","H6","PRE","DIV","ADDRESS"开始标记之一
是否有必要把input在div?
官方的原因是,在严格的 HTML4 中,FORM 元素只能包含块元素,但块元素又允许包含表单输入。form->block element->form input因此,必须使用该结构。
我找不到一个严肃的原因,为什么会这样。听起来 HTML 的作者并不想允许表单从一行开始,然后换行到下一行,然后在第三行的某个地方有一个提交按钮(您仍然可以通过重新定义display表单的属性来实现这一点) ,如果你需要的话。例如,24ways 上的这篇文章只是指出“这是过渡标准和严格标准之间的区别”。
另一个比较指出(他们正在谈论 xhtml 与 html,但想法是相同的):
在 XHTML 中,元素需要以语义方式进行编码。表格和表单不能包含在段落中,但 作为内联元素的表单元素需要包含在语义块级元素中,例如段落或表格单元格。
这让我认为 FORM 元素“语义不够”,无法包含其他元素。它通常并不用于标记代码,它更像是一个技术元素,显示将数据发布到哪里。因此,从技术上讲,它是一个 BLOCK 元素,但它需要更多“语义”的东西来包含实际的输入字段。
| 归档时间: |
|
| 查看次数: |
333 次 |
| 最近记录: |