HTML / Element / Initial coverage

<option>要素

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

Technical Summary

option要素は、selectの選択肢、またはdatalistの入力候補を表します。option自身はフォームコントロールではなく、親の選択モデルや入力候補モデルの中で意味を持ちます。

labelは利用者向けのラベル、valueは処理・送信用の値、selectedは初期選択の指定です。現在の選択状態は別の内部状態であるselectednessとして管理され、DOMではoption.selectedで扱います。

Definition / Categories

項目仕様上の整理
意味selectの選択肢、またはdatalistの入力候補
Categoriesなし
Contextselectdatalist、またはoptgroupの子孫
Content modellabelvalueの有無、datalist内かどうかで異なる。テキスト、または制限付きのphrasing content / div
Tag omission次のoptionoptgrouphrの直前、または親に後続内容がない場合は終了タグを省略できる。ただし通常の記述では省略しない

labelvalueの両方を指定したoptionは子を持たないモデルになります。labelを指定せずselect内で使う場合は、テキストまたは制限された内容を持てます。一方、datalist内ではテキストがモデルです。

Labelとvalue

仕様上、optionのラベルは、空でないlabel属性があればその値、なければtext IDL属性の値です。値はvalue属性があればその値、なければoption textを収集した結果です。

情報解決規則実装上の確認点
UI label空でないlabel属性、なければoption.text表示・選択UIのラベルと、送信値を混同しない
Option valuevalue属性、なければ収集したoption text表示文の変更が値の変更になる可能性があるため、送信値は明示する
Option text子孫のテキストを集め、ASCII空白を除去・折りたたむ。script要素は除外textContentoption.textは同じ結果とは限らない
<select name="format">
  <option value="html">HTML</option>
  <option value="markdown" label="Markdown"></option>
</select>

実務上は、通常の表示名を子テキストに書き、処理で使う値をvalueに明示する形が読みやすく追跡しやすい設計です。label属性を使う特殊な形では、content modelと表示上のラベルの解決を別に確認します。

Selectednessと初期状態

selected属性は、optionのdefault selectednessを表すboolean属性です。これに対してselectednessは現在の選択状態です。ユーザー操作やoption.selectedの設定で現在状態が変わっても、HTML属性が自動的に同じ意味へ書き換わるわけではありません。

概念意味DOMでの対応
selected属性HTMLに記録された初期選択の指定option.hasAttribute('selected')
default selectedness初期状態・リセット時の基準となる選択状態option.defaultSelected
selectedness現在そのoptionが選択されているかという状態option.selected
dirtinessユーザー操作やIDL設定後に、selected属性の変更が現在状態へ影響するかを分ける状態直接の公開IDL属性ではない
<select id="format">
  <option id="html" value="html">HTML</option>
  <option id="md" value="markdown" selected>Markdown</option>
</select>

const option = document.querySelector('#md');
option.defaultSelected; // true
option.selected;        // 現在のselectedness
option.selected = false; // 現在状態を変更し、dirtinessを設定

multipleのないselectでは、選択状態をtrueにする処理に伴い、同じoption listの他のoptionがfalseになります。単一選択の初期化、ユーザー操作、DOM操作、リセットを比較するときは、属性と状態を分けて記録します。

Disabledとoptgroup

optionは、自身にdisabled属性がある場合、または無効なoptgroupの中にある場合にdisabledです。disabledはユーザー操作による選択を止めますが、JavaScriptによるselectednessの変更まで一律に禁止する状態ではありません。

<select name="plan">
  <option value="basic">ベーシック</option>
  <optgroup label="提供終了" disabled>
    <option value="legacy">旧プラン</option>
  </optgroup>
  <option value="pro">プロ</option>
</select>

optgroupdisabledは、そのグループ内のoptionに影響します。グループ自体は選択対象ではなく、選択されるのはoptionです。

Form submissionとform owner

optionはlisted / submittableなフォームコントロールではありません。フォーム送信のentry listを作る主体は親のselectであり、選択されたoptionの値がselectの名前と組み合わされて送信対象になります。

HTMLOptionElement.formは、option自身がform-associatedだからではなく、最近接のselectのform ownerを返します。select内にないoptionや、datalist内のoptionではnullになります。

構造option.formフォームでの意味
form > select > option祖先form選択されたoptionの値はselectのentry listに関係する
form外のselectにform属性selectのform owner同一document内でselectが関連付けられたformに従う
datalist > optionnull候補自体ではなく、関連するinputの値が送信対象になる

DOM Interface

option要素はHTMLOptionElementとして公開されます。selecteddefaultSelected、表示用のtextと送信用のvalueを目的に応じて使い分けます。

const option = document.querySelector('option');

option.disabled;
option.form;
option.label;
option.defaultSelected;
option.selected;
option.value;
option.text;
option.index;

const created = new Option('Pro', 'pro', true, false);
API概要
disabled自身のdisabled属性を反映するboolean。実効的な無効状態は、無効なoptgroupの影響も受ける
labellabel属性を反映する文字列。未指定時はoptionのlabel解決結果
defaultSelectedselected属性を反映するboolean
selected現在のselectednessを読み書きするboolean。設定時はdirtinessにも関係する
valueoptionの値。value属性がなければoption textから得られる
text空白を整理したoption text。設定すると子の内容を置き換える
index / formoption list内のindex、および最近接selectのform owner
new Option()text、value、defaultSelected、selectedの順でoptionを作るlegacy factory function

new Option('Pro', 'pro', true)のように3引数以下で呼ぶ場合、selected属性が設定されても初期selectednessはtrueになりません。4番目の引数で初期selectednessを明示できます。

Fact / Evidence(主張 / 根拠)

仕様上の定義、状態、フォームとの関係を、主張・条件・状態・根拠位置に分けて記録します。ブラウザー実装とアクセシビリティツリーの観測は、下のImplementation Evidenceに分離しています。

主要Factと根拠位置
種別Fact / 主張条件・範囲状態根拠
SPECoptionselectの選択肢、またはdatalistの入力候補を表します。optionの定義と使用コンテキスト。確認済みHTML Standard: the option element
SPECoptionのラベルはlabel属性、なければoption textから解決され、値はvalue属性、なければ収集されたtextから解決されます。label / value属性の有無とtext収集アルゴリズム。確認済みHTML Standard: label and value
SPECselected属性はdefault selectednessを表し、現在のselectednessとは異なる状態です。ユーザー操作、IDL設定、リセット、single selectの選択モデル。確認済みHTML Standard: selectedness
SPECdisabledはoption自身、またはdisabledなoptgroupから解決されます。ユーザー操作による選択、DOMからの状態変更、optgroup境界。確認済みHTML Standard: disabled
SPECoptionはフォームコントロールのカテゴリではなく、option.formは最近接selectのform ownerを返します。select内、datalist内、form ownerの有無。確認済みHTML Standard: form IDL

Evidence

  1. HTML Standard: The option element — context、content model、属性、selectedness、label、value、DOM interface
  2. HTML Standard: The select element — option list、single / multipleの選択モデル、リセット、フォーム送信との関係
  3. HTML Standard: The datalist element — optionを入力候補として使う場合の関係
  4. HTML Accessibility API Mappings — option role、selected state、disabled stateのアクセシビリティAPI境界
  5. Web Platform Tests: select element — option、selectedness、selectの動作を検証するテスト群の入口

Implementation Evidence

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

共通fixture / 記録: fixture ID forms-core-v1で、initial selectedness、selectedness変更とreset、label / value / text、disabled optionとdisabled optgroup、select経由のFormData、datalist内option、HTMLOptionElement APIを確認しました。Chrome 152.0.0.0 / Windows 10 / 確認日 2026-09-15。14項目中14項目がpassです。

option要素の実装Evidence登録表
種別再現確認の範囲記録する条件状態
IMPLlabel、value、text、defaultSelected、selected、index、form、disabled、reset後のselectednessChrome 152.0.0.0 / Windows 10でfixture ID forms-core-v1を実行。selected属性を残したままIDLのselectedを変更でき、form resetで復元。labelvaluetextindexとform ownerを取得し、disabled optgroupのoptionはdisabled=falseでも:disabled、disabled optionはFormDataから除外。single / multipleの選択値、datalist option、外部selectのform ownerも確認確認済み(Chrome 1台)
WPToption、selectedness、disabled、selectのoption list、form submissionに関係するテストとの対応と実行結果select element test directoryから、option-selectedness-script-mutation.htmlselect-selectedOptions-and-value.htmlselect-validity.htmlを実行。2026-09-15 / Chrome 152.0.0.0 / Windows NT 10.0 / wpt.liveで12/12 pass。ディレクトリ内の残りのテストと他ブラウザーは未評価部分実行(12/12 pass)
AAMsingle / multiple select内optionのselected・disabled状態、selectの公開role、datalist入力の公開状態Chrome 152.0.0.0 / Windows 10 / 2026-09-15 / fixture ID forms-core-v1。idle AX treeでsingle selectはlabel付きのcollapsed pop-up button、multiple selectはlistとして公開され、選択済み・disabledのoption状態も反映。datalist付きinputはcombo boxとして公開されたが、候補optionの展開状態は未観測観測済み(idle AX tree)

今回のIMPLはChrome 1環境のDOM・フォームAPI実測です。WPTの実行結果とAAMの観測結果が揃うまでは、ブラウザー間共通の実装結果として登録しません。

Coverage / Open Issues

  • 確認済みoptionの意味、Categories、使用コンテキスト、content model、主要属性
  • 確認済みlabel / valueの解決、selected属性とselectedness、disabled optionとdisabled optgroupの仕様上の境界
  • 確認済みHTMLOptionElementの主要IDL、selectのフォーム送信との関係、datalist内optionの位置付け
  • 未完了Chrome 1環境以外でのselectedness初期化、属性変更、option list更新、disabled option、FormDataの比較
  • 未完了WPTの個別テスト実行結果、HTML-AAM全mapping、datalist候補の展開状態、支援技術ごとの観測
  • 未完了customizable select、先頭button、selectedcontent、option内の拡張content model、歴史的変更と互換性

このページは初期Coverageです。確認済みの範囲を示すものであり、すべてのブラウザーで同じ表示・操作・アクセシビリティAPI結果になること、またはoption要素全体の検証が完了したことを主張しません。

Related surface

初心者向けの選択肢の作り方、表示名と送信値、selected / disabledの使い方はYugienのoption要素ページを参照してください。選択モデル全体はAtlasのselect要素、フォーム送信の共通処理はAtlasのform要素、ラベルとの関係はAtlasのlabel要素でも確認できます。