HTML / Element / Initial coverage

<form>要素

状態: 初期Coverage 対象: HTML Living Standard 確認日: 2026-09-12

Technical Summary

form要素は、フォームコントロールをひとつの送信単位として扱い、コントロールからentry listを構成して、actionmethodenctypeに従う送信処理へ接続します。

form自体がデータを保存するわけではありません。送信先、entry listの構成、制約検証、ナビゲーション、サーバー側処理を分けて確認する必要があります。

Definition / Categories

HTML Standardにおけるform要素の基本構造
項目仕様上の整理
CategoriesFlow content、Palpable content
ContextFlow contentが期待される場所
Content modelFlow content。ただしform要素の子孫に別のform要素を置けない
Tag omission開始タグ・終了タグともに省略不可

フォームの入れ子は適合する文書の構造ではありません。DOM操作やHTML parserの処理が関与する場合は、ソース上の構造と、実際に構築されたDOM・form ownerを別々に確認します。

Content attributes

送信とフォーム参照に関係する主な属性
属性役割確認する境界
accept-charset送信に使う文字エンコーディング現在のHTML StandardではUTF-8との関係を確認する
action送信先のURL省略時はform documentのURLが使われる
method送信方法のvariantgetpostdialog。省略・無効時の既定値はGET
enctypeentry listのencoding既定はapplication/x-www-form-urlencoded。ファイルを扱う場合はmultipart/form-dataを検討する
autocompleteフォーム内コントロールの自動入力に関する既定値各コントロール側の指定、利用者設定、ブラウザー実装も関係する
namedocument.formsで使うフォーム名フォームの識別と、送信先サーバーのデータ名は別の概念
novalidate送信時のconstraint validationを抑制するboolean attribute検証を不要にするのではなく、特定の送信経路で検証を行わない指定
relformが作るlinkの関係を指定する送信処理だけでなく、formによるlinkの扱いも確認する
target送信結果を開くnavigable開く先のコンテキストと、送信によるナビゲーションを確認する

Form owner / Association

フォームコントロールなどのform-associated elementには、関係付けられたform要素であるform ownerがあります。既定では最も近いform祖先に関連付けられます。

listed form-associated elementにはform属性を指定して、同じtree内にある特定のform要素へ明示的に関連付けられます。これはフォームの入れ子を作る機能ではなく、コントロールの配置と所有関係を分けるための仕組みです。

<form id="preferences" action="/save" method="post">
  <button type="submit">保存</button>
</form>

<input form="preferences" name="theme" value="dark">

この例では、inputformの子孫でなくても、form="preferences"によってform ownerを指定できます。IDの一致、同じtree、listed要素であることなどの条件を別途確認します。

Form submission attributes

送信属性はform要素だけでなく、submit button側にも指定できます。submitter側のformactionformmethodformenctypeformnovalidateformtargetは、送信経路ごとの上書き条件になります。

<form action="/search" method="get">
  <input name="q" type="search">
  <button type="submit">通常検索</button>
  <button type="submit" formaction="/export" formmethod="post">書き出す</button>
</form>

ひとつのフォームに複数の送信経路を置く場合は、form属性とsubmitter属性のどちらが採用されるかを確認します。

Submission model

user activation / requestSubmit()
  ↓
interactive constraint validation
  ↓
submit event(キャンセル可能)
  ↓
entry listの構成
  ↓
enctypeに従うencoding
  ↓
actionとmethodに従う送信・ナビゲーション

これは説明用の流れです。実際のsubmission algorithmでは、sandbox、navigation、イベント、submitter、entry list、encodingなどの条件分岐が入ります。

form.submit()はinteractive constraint validationを行わず、submitイベントも発火しません。一方、form.requestSubmit()は通常の送信に近く、constraint validationとsubmitイベントを含みます。submitterを渡すと、そのボタンの送信属性と値も処理対象になります。

Entry list / Submittable controls

entry listを構成するときに確認する条件
条件確認内容
submittablebuttoninputselecttextareaなど、送信entry listに参加できる要素か
nameコントロールの名前が指定されているか。名前がないコントロールは通常の送信データに参加しない
disableddisabledなコントロールはentry listから除外される
checkednesscheckboxやradioは状態により参加条件が変わる
submitter複数のsubmit buttonがあっても、送信を開始したsubmitterの値・送信属性が関係する

「画面に表示されている」ことと「entry listに含まれる」ことは同じではありません。コントロールの種類、form owner、name、disabled、checkedness、submitterなどを合わせて評価します。

Constraint validation

フォーム送信時には、対象となるform controlの制約検証が関係します。required、型、範囲、長さ、pattern、custom validityなど、各コントロールの条件を評価します。

  • novalidateまたはsubmitterのformnovalidateは、送信時の検証を抑制します。
  • disabledなコントロールはconstraint validationから除外されます。
  • checkValidity()は制約を静的に確認し、reportValidity()は利用者向けの通知を伴う確認を行います。
  • クライアント側検証はUXのための機能であり、セキュリティ機構ではありません。サーバー側でも検証が必要です。

DOM interface

form要素はHTMLFormElement interfaceとして公開されます。フォームの属性、elements collection、length、reset、validation、submissionに関係するAPIを持ちます。

const form = document.querySelector('form');
form.elements;
form.checkValidity();
form.reportValidity();
form.reset();
form.requestSubmit();

APIの結果は、フォームの属性だけでなく、form owner、コントロールの状態、submitter、イベントリスナー、navigation可能性などにも依存します。

Fact / Evidence(主張 / 根拠)

主要Factを、適用条件・確認状態・仕様上の根拠位置と対応付けています。未完了の範囲は下のCoverage / Open Issuesに残しています。

主要Factと根拠位置
種別Fact / 主張条件・範囲状態根拠
SPECformはFlow content・Palpable contentであり、content modelはform子孫を除くFlow contentです。要素のcategory、context、content model、tag omissionを確認する場合。確認済みHTML Standard: the form element
SPECactionmethodenctypenovalidateなどが送信処理の条件を指定します。form側の属性とsubmitter側の対応属性を評価する場合。確認済みHTML Standard: form submission attributes
SPECform-associated elementはform ownerを持ち、listed elementではform属性による明示的関連付けが可能です。最近接form祖先、form属性、同じtree、要素のcategoryを確認する場合。確認済みHTML Standard: association of controls and forms
SPECrequestSubmit()はconstraint validationとsubmitイベントを含む送信を要求し、submit()はそれらを迂回します。HTMLFormElementのsubmission APIを比較する場合。確認済みHTML Standard: HTMLFormElement
SPECフォーム送信では、条件に応じてentry listを構成し、encodingとaction・methodに従って送信します。name、disabled、checkedness、submitter、enctypeを含む送信処理を確認する場合。確認済みHTML Standard: form submission

Evidence

  1. HTML Standard: The form element — category、content model、content attributes、HTMLFormElement interface
  2. HTML Standard: Categories — form-associated、listed、submittable、resettable elementsの分類
  3. HTML Standard: Association of controls and forms — form ownerと明示的関連付け
  4. HTML Standard: Constraints — constraint validation、validation API、security boundary
  5. HTML Standard: Form submission — submission algorithm、entry list、encoding、submitter
  6. HTML Accessibility API Mappings: form — platform accessibility mappingの確認入口

Implementation Evidence

仕様上の主張とは別に、ブラウザー実装・WPT・アクセシビリティ観測を記録します。未実施の項目は確認済みとは扱いません。

共通fixture / 記録: <form id="evidence-form" method="get">内に、type省略のinputfor/idによる明示関連、labelinputの暗黙関連、requireddisabledsubmitとtype省略のbuttonを配置しました。環境: Chrome 152.0.0.0(Windows NT 10.0) / 確認日 2026-09-12。

form要素の実装Evidence登録表
種別再現確認の範囲記録する条件状態
IMPLform owner、form elements、method、constraint validation state共通fixtureをChrome 152.0.0.0 / Windows NT 10.0で確認。methodget、form elementsは7個、required inputは:invalidに一致し、submit buttonはevidence-formをform ownerとして取得しました。確認済み(Chrome 1台)
WPTform association、validation、requestSubmit、submissionに関係するテストとの対応対応候補: form-attribute-form-owner.htmlform-checkvalidity.htmlform-requestsubmit.htmlform-action-submission.html。2026-09-15 / Chrome 152.0.0.0 / Windows NT 10.0 / wpt.liveで4件を実行し18/18 pass。選定外のWPTと他ブラウザーは未評価部分実行(18/18 pass)
AAMform container、label付きfield、submit control、disabled stateのブラウザーAX観測同じfixtureのAccessibility treeで、form container内にラベル名付きfield、Save / Default submit button、disabled field・disabled buttonが表示されました。観測済み(Chrome AX)

WPTの対応付けにはWPTリポジトリ、アクセシビリティの基準にはHTML-AAMのform mappingを参照します。

Coverage / Open Issues

  • 確認済みcategory、content model、主なcontent attributes、form owner、送信属性、entry listの主要条件、HTMLFormElementの概要
  • 確認済みsubmit()requestSubmit()のvalidation・submit event境界
  • 未完了entry list構成アルゴリズムの全分岐、formdata event、各encoding、特殊なsubmitter条件の完全な追跡
  • 未完了複数ブラウザーの実装差、WPTの正確な対応表、HTML-AAMと支援技術の観測
  • 未完了歴史的変更、サーバー側処理、互換性、Expert-gap Review

このページは初期Coverageです。ここで確認した範囲が、form要素に関する全事実の検証完了や、すべての実装で同一結果になることを意味しません。

Related surface

フォームを初めて作るときの最小例、actionmethod、label、入力チェックはYugienのform要素ページで説明しています。method="dialog"とdialogの結果はdialog要素、計算結果の表示と送信されないoutputoutput要素、labelable要素との関連付けはlabel要素、複数行入力の値と検証はtextarea要素、コントロール側の状態はinput要素button要素も参照してください。