是否有必要将INPUT元素放在DIV元素中?

Jit*_*yas 6 html

为什么这会在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"开始标记之一

是否有必要把inputdiv

nai*_*sts 1

官方的原因是,在严格的 HTML4 中,FORM 元素只能包含元素,但块元素又允许包含表单输入。form->block element->form input因此,必须使用该结构。

我找不到一个严肃的原因,为什么会这样。听起来 HTML 的作者并不想允许表单从一行开始,然后换行到下一行,然后在第三行的某个地方有一个提交按钮(您仍然可以通过重新定义display表单的属性来实现这一点) ,如果你需要的话。例如,24ways 上的这篇文章只是指出“这是过渡标准和严格标准之间的区别”。

另一个比较指出(他们正在谈论 xhtml 与 html,但想法是相同的):

在 XHTML 中,元素需要以语义方式进行编码。表格和表单不能包含在段落中,但 作为内联元素的表单元素需要包含在语义块级元素中,例如段落或表格单元格。

这让我认为 FORM 元素“语义不够”,无法包含其他元素。它通常并不用于标记代码,它更像是一个技术元素,显示将数据发布到哪里。因此,从技术上讲,它是一个 BLOCK 元素,但它需要更多“语义”的东西来包含实际的输入字段。