我在查看W3Fools时发现了与W3Schools中的错误相关的this paragraph。
<form> First name: <input type="text" name="firstname" /><br /> Last name: <input type="text" name="lastname" /> </form>
This code is wrong. Non-block-level elements (such as
<input>
) are not valid directly inside<form>
tags until HTML5.
嗯,既然我总是以这种方式格式化,我对自己说:“等等,我一直都错了。”并去验证它,看看是否正确。事实上,这段代码未通过验证。
然后,我搜索了正确的标记语言,在更可靠的来源中找到了几个示例,但以下示例都未通过验证器。
1.
W3Schools
<form>
First name: <input type="text" name="firstname"><br>
Last name: <input type="text" name="lastname">
</form>
2. Mozilla网络开发者
在“示例”部分,我找到了这个:
3. W3C WikiA common use-case 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>
<form action="http://www.google.com/search" method="get">
<label>Google: <input type="search" name="q"></label>
<input type="submit" value="Search...">
</form>
更多细节:
我正在尝试验证代码作为HTML片段,包括HTML 4.01和XHTML 1.0。 我发现的经常出现的错误是:
文档类型不允许在此处使用元素"input";缺少其中之一:"p", "h1", "h2", "h3", "h4", "h5", "h6", "div", "pre", "address", "fieldset", "ins", "del"的开始标签
问题
我应该使用什么正确和有效的标记来创建一个表单?
提前感谢。
编辑:
一个类似的问题得到了回答,将问题提问者重定向到HTML4规范的表单部分。他们提供了以下代码:
<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
标签应该用于包含类似的字段)吗?