我认为这个问题和所选答案是误导性的。一个 form
是否必须有一个 fieldset
,以及一个 fieldset
是否必须在一个 form
中,这是两个不同的问题,有两个不同的答案。
根据HTML4.01规范,fieldset
是一个有效的元素,可以出现在 form
中,但作为标准块级元素,它也可以出现在其他地方:
http://www.w3.org/TR/html401/interact/forms.html#h-17.10
http://www.w3.org/TR/html401/sgml/dtd.html#block
然而,我无法想象一种情况下会这样做,除非你正在使用 fieldset
进行装饰,这将是错误的用法。
然而,一个表单并不需要一个 fieldset
:
http://www.w3.org/TR/html401/interact/forms.html#h-17.3
因为没有人提供没有表单的fieldset的有效用例,所以我要重新激活。在不使用表单收集信息以供动态展示的情况下,使用fieldset的有效原因是每次输入的更改都会影响显示的信息。没有填写表单和点击提交的感觉。你可以在fieldset周围放一个表单,但它是无用的。然而,fieldset通过视觉上组合用于控制显示(或游戏或其他)的输入。
这个元素不一定要放在表单(form)内,但最好至少与表单相关,可以通过使用form="[form_ID]"
来关联表单。
一个有效的用例是当您有多组控件分散在非表单内容中时。在这种情况下,您通常需要将所有内容(相关或不相关)都放在表单内(糟糕),或者重复相同的表单多次(奇怪)。
而只需将所有字段集链接到单个表单中就容易得多。
例如:测试或投票等需要在每个部分之后提供一些反馈的内容。
HTML5新增了fieldset的新属性:
form_id - 指定一个或多个该fieldset所属的表单
是的,因为 fieldset 元素用于将相关的表单字段分组。
fieldset
外观需要 相当复杂的解决方案,我认为实际解决方案是直接使用它(同时记住 需要重置最小宽度 以便作为div
的替代品)。 - Nickolay