メインコンテンツへスキップ

fieldset要素


1.仕様

FIELDSET要素は、
グループ化された
フォームコントロール
(またはその他のコンテンツ)
のセットを
表します。

fieldset

フォームコントロールグループ (form control group)

種類

通常要素

カテゴリ

使用できるコンテキスト
フローコンテンツを受け入れる要素

フローコンテンツを受け入れる要素のコンテンツとして、使用できます。

フローコンテンツを受け入れる要素は、body要素, section要素, nav要素, aside要素, article要素, header要素, footer要素, main要素, address要素, li要素, dt要素, dd要素, caption要素, th要素, td要素, form要素, fieldset要素, search要素, blockquote要素, figure要素, figcaption要素, div要素, dialog要素, details要素 です。

タグの省略

どちらのタグも省略できません。

コンテンツ属性
グローバル属性 他
disabled属性
内部の凡例を除く子孫フォームコントロールが無効になっているかどうか
form属性
要素をフォーム要素に関連付けます
name属性
form.elements API で使用する要素の名前
DOM インターフェイス
HTMLFieldSetElement
  1. [Exposed=Window]
  2. interface HTMLFieldSetElement : HTMLElement {
  3. [HTMLConstructor] constructor();
  4.  
  5. [CEReactions] attribute boolean disabled;
  6. readonly attribute HTMLFormElement? form;
  7. [CEReactions] attribute DOMString name;
  8.  
  9. readonly attribute DOMString type;
  10.  
  11. [SameObject] readonly attribute HTMLCollection elements;
  12.  
  13. readonly attribute boolean willValidate;
  14. [SameObject] readonly attribute ValidityState validity;
  15. readonly attribute DOMString validationMessage;
  16. boolean checkValidity();
  17. boolean reportValidity();
  18. undefined setCustomValidity(DOMString error);
  19. };
HTMLElement
  1. [Exposed=Window]
  2. interface HTMLElement : Element {
  3. [HTMLConstructor] constructor();
  4.  
  5. // metadata attributes
  6. [CEReactions] attribute DOMString title;
  7. [CEReactions] attribute DOMString lang;
  8. [CEReactions] attribute boolean translate;
  9. [CEReactions] attribute DOMString dir;
  10.  
  11. // user interaction
  12. [CEReactions] attribute (boolean or unrestricted double or DOMString)? hidden;
  13. [CEReactions] attribute DOMString inert;
  14. undefined click();
  15. [CEReactions] attribute DOMString accessKey;
  16. readonly attribute DOMString accessKeyLabel;
  17. [CEReactions] attribute boolean draggable;
  18. [CEReactions] attribute boolean spellcheck;
  19. [CEReactions] attribute DOMString writingSuggestions;
  20. [CEReactions] attribute DOMString autocapitalize;
  21.  
  22. [CEReactions] attribute [LegacyNullToEmptyString] DOMString innerText;
  23. [CEReactions] attribute [LegacyNullToEmptyString] DOMString outerText;
  24.  
  25. ElementInternals attachInternals();
  26.  
  27. // The popover API
  28. undefined showPopover();
  29. undefined hidePopover();
  30. boolean togglePopover(optional boolean force);
  31. [CEReactions] attribute DOMString? popover;
  32. };
  33.  
  34. HTMLElement includes GlobalEventHandlers;
  35. HTMLElement includes ElementContentEditable;
  36. HTMLElement includes HTMLOrSVGElement;
Element
  1. [Exposed=Window]
  2. interface Element : Node {
  3. readonly attribute DOMString? namespaceURI;
  4. readonly attribute DOMString? prefix;
  5. readonly attribute DOMString localName;
  6. readonly attribute DOMString tagName;
  7.  
  8. [CEReactions] attribute DOMString id;
  9. [CEReactions] attribute DOMString className;
  10. [SameObject, PutForwards=value] readonly attribute DOMTokenList classList;
  11. [CEReactions, Unscopable] attribute DOMString slot;
  12.  
  13. boolean hasAttributes();
  14. [SameObject] readonly attribute NamedNodeMap attributes;
  15. sequence<DOMString> getAttributeNames();
  16. DOMString? getAttribute(DOMString qualifiedName);
  17. DOMString? getAttributeNS(DOMString? namespace, DOMString localName);
  18. [CEReactions] undefined setAttribute(DOMString qualifiedName, DOMString value);
  19. [CEReactions] undefined setAttributeNS(DOMString? namespace, DOMString qualifiedName, DOMString value);
  20. [CEReactions] undefined removeAttribute(DOMString qualifiedName);
  21. [CEReactions] undefined removeAttributeNS(DOMString? namespace, DOMString localName);
  22. [CEReactions] boolean toggleAttribute(DOMString qualifiedName, optional boolean force);
  23. boolean hasAttribute(DOMString qualifiedName);
  24. boolean hasAttributeNS(DOMString? namespace, DOMString localName);
  25.  
  26. Attr? getAttributeNode(DOMString qualifiedName);
  27. Attr? getAttributeNodeNS(DOMString? namespace, DOMString localName);
  28. [CEReactions] Attr? setAttributeNode(Attr attr);
  29. [CEReactions] Attr? setAttributeNodeNS(Attr attr);
  30. [CEReactions] Attr removeAttributeNode(Attr attr);
  31.  
  32. ShadowRoot attachShadow(ShadowRootInit init);
  33. readonly attribute ShadowRoot? shadowRoot;
  34.  
  35. Element? closest(DOMString selectors);
  36. boolean matches(DOMString selectors);
  37. boolean webkitMatchesSelector(DOMString selectors); // legacy alias of .matches
  38.  
  39. HTMLCollection getElementsByTagName(DOMString qualifiedName);
  40. HTMLCollection getElementsByTagNameNS(DOMString? namespace, DOMString localName);
  41. HTMLCollection getElementsByClassName(DOMString classNames);
  42.  
  43. [CEReactions] Element? insertAdjacentElement(DOMString where, Element element); // legacy
  44. undefined insertAdjacentText(DOMString where, DOMString data); // legacy
  45. };
GlobalEventHandlers
  1. interface mixin GlobalEventHandlers {
  2. attribute EventHandler onabort;
  3. attribute EventHandler onauxclick;
  4. attribute EventHandler onbeforeinput;
  5. attribute EventHandler onbeforematch;
  6. attribute EventHandler onbeforetoggle;
  7. attribute EventHandler onblur;
  8. attribute EventHandler oncancel;
  9. attribute EventHandler oncanplay;
  10. attribute EventHandler oncanplaythrough;
  11. attribute EventHandler onchange;
  12. attribute EventHandler onclick;
  13. attribute EventHandler onclose;
  14. attribute EventHandler oncontextlost;
  15. attribute EventHandler oncontextmenu;
  16. attribute EventHandler oncontextrestored;
  17. attribute EventHandler oncopy;
  18. attribute EventHandler oncuechange;
  19. attribute EventHandler oncut;
  20. attribute EventHandler ondblclick;
  21. attribute EventHandler ondrag;
  22. attribute EventHandler ondragend;
  23. attribute EventHandler ondragenter;
  24. attribute EventHandler ondragleave;
  25. attribute EventHandler ondragover;
  26. attribute EventHandler ondragstart;
  27. attribute EventHandler ondrop;
  28. attribute EventHandler ondurationchange;
  29. attribute EventHandler onemptied;
  30. attribute EventHandler onended;
  31. attribute OnErrorEventHandler onerror;
  32. attribute EventHandler onfocus;
  33. attribute EventHandler onformdata;
  34. attribute EventHandler oninput;
  35. attribute EventHandler oninvalid;
  36. attribute EventHandler onkeydown;
  37. attribute EventHandler onkeypress;
  38. attribute EventHandler onkeyup;
  39. attribute EventHandler onload;
  40. attribute EventHandler onloadeddata;
  41. attribute EventHandler onloadedmetadata;
  42. attribute EventHandler onloadstart;
  43. attribute EventHandler onmousedown;
  44. [LegacyLenientThis] attribute EventHandler onmouseenter;
  45. [LegacyLenientThis] attribute EventHandler onmouseleave;
  46. attribute EventHandler onmousemove;
  47. attribute EventHandler onmouseout;
  48. attribute EventHandler onmouseover;
  49. attribute EventHandler onmouseup;
  50. attribute EventHandler onpaste;
  51. attribute EventHandler onpause;
  52. attribute EventHandler onplay;
  53. attribute EventHandler onplaying;
  54. attribute EventHandler onprogress;
  55. attribute EventHandler onratechange;
  56. attribute EventHandler onreset;
  57. attribute EventHandler onresize;
  58. attribute EventHandler onscroll;
  59. attribute EventHandler onscrollend;
  60. attribute EventHandler onsecuritypolicyviolation;
  61. attribute EventHandler onseeked;
  62. attribute EventHandler onseeking;
  63. attribute EventHandler onselect;
  64. attribute EventHandler onslotchange;
  65. attribute EventHandler onstalled;
  66. attribute EventHandler onsubmit;
  67. attribute EventHandler onsuspend;
  68. attribute EventHandler ontimeupdate;
  69. attribute EventHandler ontoggle;
  70. attribute EventHandler onvolumechange;
  71. attribute EventHandler onwaiting;
  72. attribute EventHandler onwebkitanimationend;
  73. attribute EventHandler onwebkitanimationiteration;
  74. attribute EventHandler onwebkitanimationstart;
  75. attribute EventHandler onwebkittransitionend;
  76. attribute EventHandler onwheel;
  77. };
ElementContentEditable
  1. interface mixin ElementContentEditable {
  2. [CEReactions] attribute DOMString contentEditable;
  3. [CEReactions] attribute DOMString enterKeyHint;
  4. readonly attribute boolean isContentEditable;
  5. [CEReactions] attribute DOMString inputMode;
  6. };
HTMLOrSVGElement
  1. interface mixin HTMLOrSVGElement {
  2. [SameObject] readonly attribute DOMStringMap dataset;
  3. attribute DOMString nonce; // intentionally no [CEReactions]
  4.  
  5. [CEReactions] attribute boolean autofocus;
  6. [CEReactions] attribute long tabIndex;
  7. undefined focus(optional FocusOptions options = {});
  8. undefined blur();
  9. };
ARIA in HTML
暗黙的="group" ARIAロール="あり" aria-* 属性="GlobalAny"

暗黙的な ARIAセマンティクスは、role=group です。

作成者が要素に指定してもよい ARIAロール値は、 none, presentation, radiogroup です。

グローバル aria-* 属性と、許可されたロールに適用される任意の aria-* 属性が記述できます。

レンダリング
ブロックボックス
フローコンテンツ
  1. fieldset {
  2. display: block;
  3. margin-inline: 2px;
  4. border: groove 2px ThreeDFace;
  5. padding-block: 0.35em 0.625em;
  6. padding-inline: 0.75em;
  7. min-inline-size: min-content;
  8. }

CSS を大雑把に読むと、 ブロックレベルのブロックコンテナボックス(ブロックボックス)を生成します。 などになります。

説明
fieldset要素は、グループ化されたフォームコントロール (またはその他のコンテンツ) のセットを表し、オプションでキャプションも付けられます。キャプションは、fieldset要素の子である最初の legend要素 (存在する場合) によって与えられます。残りの子孫がグループを形成します。
  1. <!DOCTYPE html>
  2. <html lang="ja">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>fieldset要素の例 - (Example of fieldset element) | 離珠のHTMLでしぃ!</title>
  6. </head>
  7. <body>
  8. <h1>fieldset要素の例</h1>
  9. <form action="../Html/fmreceive.htm">
  10. <fieldset name="nfifieldset">
  11. <legend>Heading</legend>
  12. <input name="nipInput" value="abc">
  13. <button name="nbtSender" value="../Html/exfieldset.htm">ボタン</button>
  14. <br>受信用の<br>ページへ
  15. </fieldset>
  16. </form>
  17. </body>
  18. </html>

このサンプルへのリンクです。
(./exfieldset.htm)

JSONデータ
JSON形式での、データのイメージです。
  1. {
  2. "fieldset": {
  3. "check": "2024-09-01",
  4. "group": "Form",
  5. "element": "- - (legend,(%Flow)*) -- form control group. (Normal elements.) [Flow|Sectioningroots|Listed|Autocapitalize|Form|Palpable] --",
  6. "attlist": {
  7. "%Global;": "",
  8. "disabled": "(disabled) #IMPLIED -- Whether the descendant form controls, except any inside legend, are disabled --",
  9. "form": "IDREF #IMPLIED -- Associates the element with a form element --",
  10. "name": "CDATA #IMPLIED -- Name of the element to use in the form.elements API. --",
  11. },
  12. "comment": "フォームコントロールグループ (form control group)",
  13. "point": "グループ化されたフォームコントロール (またはその他のコンテンツ) のセットを表し、オプションでキャプションも付けられます。キャプションは、fieldset要素の子である最初の legend要素 (存在する場合) によって与えられます。残りの子孫がグループを形成します。",
  14. "kind": "Normal",
  15. "categories": [
  16. "Flow",
  17. "Sectioningroots",
  18. "Listed",
  19. "Autocapitalize",
  20. "Formassociated",
  21. "Palpable",
  22. ],
  23. "used": "parent (%Flow)*",
  24. "contentmodel": "fieldset (legend,(%Flow)*)",
  25. "tag": [
  26. "-",
  27. "-",
  28. ],
  29. "attributes": {
  30. "disabled": "内部の凡例を除く子孫フォームコントロールが無効になっているかどうか",
  31. "form": "要素をフォーム要素に関連付けます",
  32. "name": "form.elements API で使用する要素の名前",
  33. },
  34. "dominterface": "HTMLFieldSetElement",
  35. "rendering": "Flow",
  36. "reference": [
  37. {
  38. "title": "HTML Living Standard. 4.10.15 The fieldset element.",
  39. "href": "https://html.spec.whatwg.org/multipage/form-elements.html#the-fieldset-element",
  40. "heading": "HTML Living Standard. 4.10.15 The fieldset element",
  41. "sub": "Last Updated 27 August 2024",
  42. },
  43. {
  44. "title": "HTML Living Standard. 15 Rendering 15.3.12 The fieldset and legend elements.",
  45. "href": "https://html.spec.whatwg.org/multipage/rendering.html#the-fieldset-and-legend-elements",
  46. "heading": "HTML Living Standard. 15 Rendering 15.3.12 The fieldset and legend elements",
  47. "sub": "Last Updated 27 August 2024",
  48. },
  49. {
  50. "title": "HTML 5.2 W3C Recommendation. 4.10.15. The fieldset element. W3C Recommendation, 14 December 2017.",
  51. "href": "https://www.w3.org/TR/2017/REC-html52-20171214/sec-forms.html#the-fieldset-element",
  52. "heading": "HTML 5.2 W3C 勧告. 4.10.15. The fieldset element",
  53. "sub": "W3C勧告、2017年12月14日",
  54. },
  55. {
  56. "title": "HTML 5.2 W3C Recommendation. 10.3.13. The fieldset and legend elements.",
  57. "href": "https://www.w3.org/TR/2017/REC-html52-20171214/rendering.html#the-fieldset-and-legend-elements",
  58. "heading": "HTML 5.2 W3C 勧告. 10.3.13. The fieldset and legend elements.",
  59. "sub": "W3C勧告、2017年12月14日",
  60. },
  61. {
  62. "title": "HTML 5.1 W3C Recommendation. 4.10.16. The fieldset element. W3C Recommendation, 1 November 2016.",
  63. "href": "https://www.w3.org/TR/2016/REC-html51-20161101/sec-forms.html#the-fieldset-element",
  64. "heading": "HTML 5.1 W3C 勧告. 4.10.16. The fieldset element",
  65. "sub": "W3C勧告、2016年11月1日",
  66. },
  67. {
  68. "title": "HTML 5.1 W3C Recommendation. 10.3.13. The fieldset and legend elements. W3C Recommendation, 1 November 2016.",
  69. "href": "https://www.w3.org/TR/2016/REC-html51-20161101/rendering.html#the-fieldset-and-legend-elements",
  70. "heading": "HTML 5.1 W3C 勧告. 10.3.13. The fieldset and legend elements.",
  71. "sub": "W3C勧告、2016年11月1日",
  72. },
  73. {
  74. "title": "HTML 5 W3C Recommendation. 4.10.16 The fieldset element. W3C Recommendation, 28 October 2014.",
  75. "href": "https://www.w3.org/TR/2014/REC-html5-20141028/forms.html#the-fieldset-element",
  76. "heading": "HTML 5 W3C 勧告. 4.10.16 The fieldset element",
  77. "sub": "W3C勧告、2014年10月28日",
  78. },
  79. {
  80. "title": "HTML 5 W3C Recommendation. 10.3.13 The fieldset and legend elements. W3C Recommendation, 28 October 2014.",
  81. "href": "https://www.w3.org/TR/2014/REC-html5-20141028/rendering.html#the-fieldset-and-legend-elements",
  82. "heading": "HTML 5 W3C 勧告. 10.3.13 The fieldset and legend elements.",
  83. "sub": "W3C勧告、2014年10月28日",
  84. },
  85. {
  86. "title": "HTML 4.01 Specification W3C Recommendation. 17.10 Adding structure to forms: the FIELDSET and LEGEND elements. W3C Recommendation 24 December 1999.",
  87. "href": "https://www.w3.org/TR/html401/interact/forms.html#h-17.10",
  88. "heading": "HTML 4.01 Specification W3C 勧告. 17.10 Adding structure to forms: the FIELDSET and LEGEND elements",
  89. "sub": "W3C勧告1999年12月24日",
  90. },
  91. {
  92. "title": "MDN Web Docs. HTML <fieldset>: The Field Set element.",
  93. "href": "https://developer.mozilla.org/ja/docs/Web/HTML/Element/fieldset",
  94. "heading": "<fieldset>: フィールドセット要素 - HTML: ハイパーテキストマークアップ言語 | MDN",
  95. },
  96. ],
  97. "version": {
  98. "first": "HTML4",
  99. "latest": "HTML Living Standard",
  100. },
  101. }
  102. }

注意: 簡易に描画する為に、各項目の後ろに , を付与しています。JSON の形式では、末尾の項目の後には , は付けません。

最終確認日

2024-09-01


2.使用可能な箇所

フローコンテンツ
受け入れる要素に
配置できます。

fieldset要素を使用できる状態(コンテキストContext)は、 フローコンテンツを受け入れる要素に配置できます。

フローコンテンツを受け入れる要素は、body要素, section要素, nav要素, aside要素, article要素, header要素, footer要素, main要素, address要素, li要素, dt要素, dd要素, caption要素, th要素, td要素, form要素, fieldset要素, search要素, blockquote要素, figure要素, figcaption要素, div要素, dialog要素, details要素 です。


3.配置できるコンテンツ


4.属性

グローバル属性と、
disabled,
form,
name を
設定できます。

fieldsetは、グローバル属性disabled属性, form属性, name属性を設定できます。

  1. <form action="./fmreceive.htm">
  2. <fieldset>
  3. <input name="nipText" type="text" value="123">
  4. </fieldset>
  5. <button name="nbtSender" value="./fofieldset.htm#MAP4NEXT">ボタン</button>
  6. </form>

form要素を改めて提示していない限り、この雛型の 2 行目のfieldset要素の開始タグを置き換えてデモとしています。

例示に於いて、送信の状況を見る為に送信先を./fmreceive.htmとしています。それは送信のデモ用の受信ページです。そこで送信元が分かる様に、名前がnbtSenderというデータで送信元を表す記述をしています。

例示では見易さの為に、inputにスタイルシートで装飾(幅)の指定をしています。

disabled属性

  1. <fieldset disabled>

disabledは、コントロールを非対話型にして、その値が送信されないようにする為に使用されるブール属性です。

form属性

  1. <form action="./fmreceive.htm">
  2. <fieldset form="ifoForm41">
  3. <input name="nipText" type="text" value="123">
  4. </fieldset>
  5. <button name="nbtSender" value="./fofieldset.htm#MH3FORM">ボタン</button>
  6. </form>
  7. <form id="ifoForm41" action="./fmreceive.htm">
  8. <button name="nbtSender" value="./fofieldset.htm#MH3FORM">ボタン</button>
  9. </form>
  10. <div>この下のフォームのフォームコントロールは、
  11. <div id="idvJsElements41">〇〇</div>
  12. </div>
  13. <script>
  14. document.addEventListener("DOMContentLoaded", function() {
  15. var voElements41 = document.getElementById("ifoForm41");
  16. var voDemo41 = document.getElementById("idvJsElements41");
  17. var veUl = document.createElement("ul");
  18. var veLi = document.createElement("li");
  19. var veSpan = document.createElement("span");
  20. for (var i = 0; i < voElements41.length; i++){
  21. veLi = document.createElement("li");
  22. veSpan = document.createElement("span");
  23. veSpan.innerHTML = 'tagName=' + voElements41[i].tagName + 'name=' + voElements41[i].name + '<br>value=<wbr>' + voElements41[i].value;
  24. veLi.appendChild(veSpan);
  25. if(voElements41[i].tagName == 'FIELDSET' && voElements41[i].elements) {
  26. veUl2 = document.createElement("ul");
  27. for (var j = 0; j < voElements41.elements.length; j++){
  28. veLi2 = document.createElement("li");
  29. veSpan2 = document.createElement("span");
  30. veSpan2.innerHTML= 'tagName=' + voElements41[i].elements[j].tagName + ' name=' + voElements41[i].elements[j].name + '<br>value=<wbr>' + voElements41[i].elements[j].value;
  31. veLi2.appendChild(veSpan2);
  32. veUl2.appendChild(veLi2);
  33. }
  34. veLi.appendChild(veUl2);
  35. }
  36. veUl.appendChild(veLi);
  37. }
  38. if(veUl.childElementCount) {
  39. voDemo41.textContent = "";
  40. while(voDemo41.firstChild){
  41. voDemo41.removeChild(voDemo41.firstChild);
  42. }
  43. voDemo41.appendChild(veUl);
  44. }
  45. });
  46. </script>

formは、その要素をそのフォーム所有者に明示的に関連付ける為に使用されます。

フォーム関連要素は、デフォルトでは、最も近い祖先form要素に関連付けられます。ただし、リストされている場合は、これを上書きする為にformを指定できます。つまりformを指定してフォーム所有者に関連付けした場合は、その要素の最も近い祖先への関連付けは上書きされるという事で、複数のフォーム所有者に関連付ける事は出来ないという事です。

あくまでfieldsetformとの関連付けなので、その子要素を含めてformに関連付ける訳ではありません。例示から、formに関連付いているのはfieldsetbuttonです。そしてそのfieldsetから辿れるのがinputな訳です。なので、下のフォームでinputのデータは辿れるのですが、そのフォームとしての送信対象にはinputはなっていない訳です。inputも送信対象としたい場合は、それ自体で関連付ける必要があります。

この下のフォームのフォームコントロールは、
〇〇

name属性

  1. <fieldset name="nfsFieldset">

nameは、要素の名前を表します。

nameは、フォームの送信時やformの elements オブジェクトで使用されるフォームコントロールの名前を指定します。属性が指定されている場合、その値は空の文字列またはisindexであってはなりません。
isindex以外では、name に空でない任意の値が許可されます。name_charset_の ASCII 大文字と小文字を区別しない一致は特別です。

nameはフォームコントロールの名前となるので、他の属性名などと重複しないように命名規則を事前に内部規則などで決めておくのが良いです。


5.Web API

name属性を用いて
form要素
(HTMLFormElement
オブジェクト)の
プロパティとして
要素を取得する方法が
お勧めです。

fieldset要素単体を表すプロパティはないですが、まずform要素を取得して、nameの属性値を名称とするそれのプロパティとして要素を取得する方法がお勧めです。 理由は、他のformコンテンツがその名称が送信時のデータ名ともなり分かり易いという理由でこの方法を採用する事が考えられるので、それに合わせる方が良いと思うからです。 なにより、formコンテンツを用いるのなら、そのフォーム所有者を意識した方が良いでしょう。


6.レンダリング

  1. fieldset {
  2. display: block;
  3. margin-inline: 2px;
  4. border: groove 2px ThreeDFace;
  5. padding-block: 0.35em 0.625em;
  6. padding-inline: 0.75em;
  7. min-inline-size: min-content;
  8. }

fieldset要素は、フローレイアウトに配置されたときにブロックレベルのブロックコンテナボックス(ブロックボックス)を生成します。


7.気を付ける点

カテゴリ

formコンテンツであるが送信可能な要素ではありません。

fieldset要素(内容コンテンツContent)として、0 以上のフローコンテンツを配置できます。なのでinput要素などのフォームコントロールを配置して、まとめる, グループとして表したり扱ったり出来ます。ただこれと、フォーム所有者との関連付けは別である事に注意が必要です。


8.付記