在html表单中正确和正确的标记

时间:2013-04-30 10:08:11

标签: html html-form html-validation

曾经的HTML


我正在寻找W3Fools并找到与{W3Schools中的错误相关的this paragraph

  <form>  
    First name: <input type="text" name="firstname" /><br />  
    Last name: <input type="text" name="lastname" />  
   </form>
     

这段代码错了。非块级元素(例如<input>)是   在HTML5之前,不能直接在<form>标记内有效。

好吧,因为我总是按照这种方式格式化,我对自己说:“等等,我一直都错了”。并去验证它是否是真的。有效地,此代码未通过validation

然后,在搜索正确的标记时,我从更可靠的来源找到了几个示例,但以下示例都没有通过验证程序。



坏,好,丑


1。 W3Schools

<form>
First name: <input type="text" name="firstname"><br>
Last name: <input type="text" name="lastname">
</form>

2。 Mozilla Network Developer

在“示例”部分中,我发现了这个:

  

常见用例senario

<!-- A common form that includes input tags -->
<form action="getform.php" method="get">
    First name: <input type="text" name="first_name" /><br />
     Last name: <input type="text" name="last_name" /><br />
        E-mail: <input type="email" name="user_email" /><br />
<input type="submit" value="Submit" />
</form>

3。 W3C Wiki

<form action="http://www.google.com/search" method="get">
  <label>Google: <input type="search" name="q"></label>
  <input type="submit" value="Search...">
</form>



A Fistful of Codes


更多详情:

我正在尝试在HTML 4.01和XHTML 1.0中将代码验证为HTML片段。 我发现的反复出现的错误是:

  

文档类型不允许元素“输入”;缺少一个“p”,   “h1”,“h2”,“h3”,“h4”,“h5”,“h6”,“div”,“pre”,“address”,   “fieldset”,“ins”,“del”start-tag

问题

我应该使用什么正确且有效的标记制作表单?

提前致谢。


编辑:

已回答similar question将OP重定向到HTML4 specification的表单部分。他们提供了这段代码:

<FORM action="http://somesite.com/prog/adduser" method="post">
   <P>
     <!--...stuff...-->
     <INPUT type="submit" value="Send"> <INPUT type="reset">
   </P>
</FORM>

首先,它与wiki的代码不同。但是从未知道,从我知道,维基它不是100%准确....但是:

  • 他们通过将所有标记括在<p>中来修复验证错误。但表单不是段落,它不是?这段代码通过验证,但我认为这不是很语义......

  • 你给我的专家答案(谢谢!),大部分都是将内部标签封装在<fieldset>中,但如果我只需要一个fieldset(例如) ,只有一个字段或自相关字段的表单),这是正确的吗?可能不是超级代码(因为fieldset标签应该包含类似的字段)?

4 个答案:

答案 0 :(得分:3)

字段集是表单中常用的块级元素。因此,您可以使用字段集或其他块级元素,如div。

<form action="http://www.google.com/search" method="get">
<fieldset><legend>My form</legend>
<label>Google: <input type="text" name="q"></label>
<input type="submit" value="Search...">
</fieldset>
</form>

<form action="http://www.google.com/search" method="get">
<div>
<label>Google: <input type="text" name="q"></label>
<input type="submit" value="Search...">
</div>
</form>

这可能很少被标记为无效标记,因为人们倾向于使用很多div来帮助很好地设置样式。

答案 1 :(得分:2)

我倾向于同意其他一些内容,因为FieldSet是将表单项组合在一起的最佳方式,尤其是因为它确实有助于屏幕阅读器之类的东西。

我倾向于使用以下内容:

<form action="http://www.google.com/search" method="get">
    <fieldset>
        <legend style="display: none;"></legend>
        <label for="q">Google:</label>
        <input type="text" name="q">
        <input type="submit" value="Search...">
    </fieldset>
</form>

我通常不包含图例,但如果验证需要它,则不一定必须可见;)

答案 2 :(得分:1)

  

这段代码错了。在HTML5之前,非块级元素(例如<input>)在<form>标记内无效。

这不完全正确。它们在Transitional DTD中有效,但不适用于严格的DTD。

  

我应该使用哪种正确有效的标记来制作表单?

这取决于表格。

对于给出的示例,W3C版本是最好的。在一个表单中使用块容器并不重要(除非它添加了有用的语义,或者对单独的控件组进行合理的分组)。 <label>元素非常好。

答案 3 :(得分:0)

我倾向于在<fieldset>标签内对字段和标签进行分组,这听起来对我来说非常语义。