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

时间:2010-01-24 12:29:39

标签: 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>

这不是吗?

  <form method="get" action="/search" id="search">
    <div>
       <input type="text" value="search" maxlength="80" class="textbox" >
    </div>
  </form>

这是错误

  

文档类型不允许元素     “INPUT”在这里;缺少一个“P”,     “H1”,“H2”,“H3”,“H4”,“H5”,“H6”,     “PRE”,“DIV”,“ADDRESS”开始标记

是否有必要将input放入div

3 个答案:

答案 0 :(得分:3)

<!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM) -- interactive form -->

form可以包含block元素(另一种形式除外)或脚本元素。

输入不是块元素,但大多数块元素可能包含内联元素,包括输入。

答案 1 :(得分:3)

通过严格验证,您需要在输入字段周围添加块元素; 这里最好的选择是使用<fieldset>

答案 2 :(得分:1)

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

我找不到一个严肃的理由,为什么会这样。听起来HTML的作者不希望允许表单从一行开始,然后换行到下一行,然后在第三行的某个地方有一个提交按钮(通过重新定义{{1},您仍然可以实现如果需要,表单的属性。例如,this article on 24ways只是声明“它是Transitional和Strict标准之间的区别”。

Another comparison州(他们谈论的是xhtml vs html,但想法是一样的):

  

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

这让我觉得FORM元素不足以包含其他元素。它通常不用于标记代码,它更像是一个技术元素,用于显示将数据发布到的位置。因此,它在技术上是一个BLOCK元素,但它需要更多的“语义”来包含实际的输入字段。