为什么我们需要一个fieldset标签?


165

为什么需要<fieldset>标签?无论其目的是可能是form标签的子集。

我在W3Schools上查找了一些信息,其中说:

  • <fieldset>标记用于在窗体组相关的元素。
  • <fieldset>标签绘制围绕相关元素的盒子。

对于那些将“为什么它存在于规范中”误认为“它做什么”的人更多的解释。我认为绘图部分无关紧要,并且我不明白为什么我们只需要一个特殊标签来将表单中的一些相关元素分组。


30
为什么需要任何标签?当我们可以从1px divs创建具有背景色的图像时,为什么需要img标签?
奥德

127
请注意:W3C没有做W3Schools的。
韦斯利·默奇

82
不要指望w3schools。只需使用MDN:fieldset @ MDN即可
西尔科(Sirko)2012年

9
我知道@Madmartigan。但是W3C仅给出了我认为没有什么用的规范来回答我的问题。
东僧和尚

2
关于(不)使用W3Schools以及使用更多可信赖的网站获取技术信息:w3fools.com
DenilsonSáMaia

Answers:


187

最明显的实际示例是:

<fieldset>
  <legend>Colour</legend>

  <input type="radio" name="colour" value="red" id="colour_red">
  <label for="colour_red">Red</label>

  <input type="radio" name="colour" value="green" id="colour_green">
  <label for="colour_green">Green</label>

  <input type="radio" name="colour" value="blue" id="colour_blue">
  <label for="colour_blue">Blue</label>

</fieldset>

这使每个单选按钮都可以被标记,同时还可以为整个组提供一个标签。这在使用辅助技术(例如屏幕阅读器)的情况下尤其重要,在这种情况下,视觉表示无法暗示控件及其图例的关联。


4
我没有可用的链接,但是很显然,许多屏幕阅读器都会在字段集中的每个标签之前阅读图例文本。
韦斯利·默奇

8
@Madmartigan —很好,这意味着您知道您仍在处理同一组单选按钮。(这也是确保图例简洁的原因)。
昆汀

1
“辅助技术”很有意义。
东和尚2012年

5
此外,<fieldset>可用于“禁用”分组的元素。我希望<fieldset>也应该用于通过向标签添加'required'属性来指定是否需要一个组,不幸的是,这是行不通的!
Simon Savai 2015年

41

fieldset的另一个功能是禁用它会禁用其中包含的所有字段。

<fieldset disabled>
  <legend>Disabled Fields</legend>
  <input type="text" value="Sample">
  <textarea>Text Area</textarea>
</fieldset>

<fieldset>
  <legend>Enabled Fields</legend>
  <input type="text" value="Sample">
  <textarea>Text Area</textarea>
</fieldset>


6
当然,可以提出这样的论点,即该disabled属性对fieldsets和表单控件起作用时,也应该正确地为该form元素实现。这样做很有意义,不是吗?
AMN

25

辅助功能需要它。

检出:http : //usability.com.au/2013/04/accessible-forms-1-labels-and-identification/

在HTML 4个元素fieldset,并legend让您的布局和组织大型形式的以逻辑方式兴趣许多不同的领域,而无需使用表。该fieldset标签可以用来创建一个围绕选定的元素盒和legend标签将给出一个标题为那些元素。通过这种方式,表单元素可以组合在一起成为已识别的类别。

不同的浏览器可能fieldset以不同的方式显示默认边框。级联样式表可用于删除边框或更改其外观。


HTML4中不存在fieldset。它的HTML5功能
radio_head

5
它以HTML 4.0.1的形式出现-w3.org/TR/html401/interact/forms.html#h-17.10
Eric网站

14

如上所述这里,这个标签的目的是提供清晰的形式组织,并允许装修表单元素设计师更容易获得。


6

Fieldset逻辑上以表格形式组织项目,但它也提高了使用听觉浏览器的人员的可访问性。Fieldset方便使用,因此过去在许多应用程序中非常流行,因此他们也使用html实现了它。


4

我喜欢这样,当您将收音机与字段集一起使用,并且没有在单选按钮输入标签上放置id时,该字段集所代表的组将被添加到标签链中,就好像它是单个项一样。

这使您可以浏览表单,当您进入字段集时,可以使用箭头键来更改选定的单选,然后在完成时退出。

另外,不要忘记可访问性。屏幕阅读器需要fieldset + legend才能理解您的表单,并能够以某种自然的方式将其阅读给用户。如果您不希望视力障碍的用户看到图例,请随时将其消失。使用CSS正确放置和设置图例样式有时会成为跨浏览器的麻烦,尤其是对于旧版浏览器而言,因此,我发现使图例标记对于屏幕阅读器用户不可见,并添加了一个单独的aria-hidden =“ true”跨度,其样式类似于标签目光敏锐的用户使事情变得简单易懂,并使事物易于访问。


This lets you tab through a form, and when you get to a fieldset, you can use arrow keys to change the selected radio, and then tab away when you're done.-这是无线电输入的默认行为,与字段集无关。默认情况下,复选框的行为不同。
弗拉基米尔·科纳(Fladimir Kornea),2017年

2

对于CSS样式和将标签与控件相关联,我觉得很方便。这样可以轻松地将可视容器放在一组字段周围并对齐标签。


2

当我有一个巨大的表单并想在某种形式的向导中分解时,我使用字段集对表单输入进行分组。

在SO上回答相同的问题。


2

仅总结一些优点:

HTML  <fieldset> 元素用于对MDN<label>定义的Web表单中的多个控件以及标签()进行分组。

换句话说:fieldset标记使您可以对字段集进行逻辑分组,以使表单更具描述性。因此,有一组表单控件(可选)以通用名称分组。

<fieldset>
  <legend>Choose your favorite animal</legend>

  <input type="radio" id="dog" name="animal">
  <label for="dog">Dog</label><br/>

  <input type="radio" id="cat" name="animal">
  <label for="cat">Cat</label><br/>
</fieldset>

使用字段集的“ 优点 ”是:

  • 它们允许您以最可用的语义方式标记数据(在这种情况下为表单)。考虑到将字段放在字段集中比将字段放在div中更具描述性。div不会告诉您有关字段之间关系的任何信息,而字段集则告诉您存在关系。
  • 通过使用disable,它允许您一次性禁用和其所有内容。
  • 辅助功能很有帮助

1

对我来说,<fieldset>...</fieldset>元素的最大优点之一是<form>...</form>即使上下文<fieldset>...</fieldset>不在表单中也可以保留上下文。

例如,以下形式:

<div class="header">
    <form id="myForm">
        <input type="text" name="someInput">
    </form>
</div>

<div class="footer">
    <fieldset form="myForm">
        <input type="text" name="someInput1">
    </fieldset>
</div>

在语义上与以下形式相同:

<form>
    <input type="text" name="someInput">
    <input type="text" name="someInput1">
</form>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.