我正在寻找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。
然后,在搜索正确的标记时,我从更可靠的来源找到了几个示例,但以下示例都没有通过验证程序。
<form>
First name: <input type="text" name="firstname"><br>
Last name: <input type="text" name="lastname">
</form>
在“示例”部分中,我发现了这个:
常见用例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 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
标签应该包含类似的字段)?
答案 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>
标签内对字段和标签进行分组,这听起来对我来说非常语义。