<input>要素
Technical Summary
input要素は、通常はユーザーがデータを編集するためのフォームコントロールを伴うtyped data fieldを表します。type属性はenumerated attributeであり、その状態がデータ型・関連するコントロール・適用可能な属性やAPIを選びます。
typeが省略された場合と無効な値の場合の既定状態はTextです。Hidden状態だけは、通常の入力コントロールとは異なるcategoryと適用範囲を持ちます。
Structure / Content model
| 項目 | 仕様上の整理 |
|---|---|
| Context | phrasing contentが期待される場所 |
| Content model | Nothing |
| Tag omission | 終了タグなし。inputはvoid element |
| 基本的な意味 | typed data field。具体的な意味はtype状態に依存 |
したがって、inputの中にテキストや子要素を入れて意味を補うことはできません。表示上の説明はlabelなど周囲の要素で関連付けます。
type状態とVariant
| 状態の例 | データの意味 | 関連するコントロール |
|---|---|---|
| Hidden | 任意の文字列 | 表示用コントロールなし |
| Text / Search | 改行を含まない文字列 | テキストまたは検索コントロール |
| Email / URL / Password | メールアドレス、絶対URL、機密性のある文字列 | テキストコントロール(Passwordは入力を隠す) |
| Date / Month / Week / Time | タイムゾーンなしの日付・時刻の値 | 日付・時刻コントロール |
| Number / Range | 数値。Rangeは厳密値が重要でないことも表す | テキスト・spinner・slider等 |
| Checkbox / Radio | 定義済み集合の選択、または列挙値 | checkbox / radio button |
| File / Submit / Image / Reset / Button | ファイル、送信、画像座標、リセット、ボタンの各状態 | 状態に対応する専用コントロール |
これは単なる見た目の切替ではありません。仕様は状態ごとに、content attribute、IDL attribute、method、eventの適用可否を定義します。
<input type="email" name="address">
<input type="checkbox" name="topics" value="html">
<input type="date" name="published-on">
Enumerated attributeとしての type
typeは任意の文字列をそのまま意味として採用する属性ではなく、定義済みkeywordから状態を選ぶenumerated attributeです。値がない場合と無効な値の場合はText状態になります。未知の値を指定しても、独自の新しいinput状態は作成されません。
| 条件 | 選択される状態 | 注意点 |
|---|---|---|
type省略 | Text | 通常の1行テキスト入力として扱う |
| 定義済みkeyword | 対応する状態 | 状態ごとの適用表と個別仕様を確認する |
| 未知または無効な値 | Text | 値そのものを新しい状態として解釈しない |
Form-associated / Category
inputはform-associated elementです。ただし、type状態によってcategoryが変わります。
| 状態 | 主なcategory / 関連性 |
|---|---|
| Hidden以外 | flow、phrasing、interactive、listed、labelable、submittable、resettable、form-associated、palpable |
| Hidden | flow、phrasing、listed、submittable、resettable、form-associated。interactive、labelable、palpableとしては扱わない |
同じ要素名だからといって、すべての状態が同じUI・アクセシビリティ・イベント・フォーム処理を持つわけではありません。
Attributes / Constraint validation
nameはフォーム送信で使用する名前と、form.elementsAPIでの参照に関係します。value、checked、filesなどは、選択された状態に応じた値・状態を表します。required、pattern、min、max、step、minlength、maxlengthなどは、状態ごとに適用範囲と検証方法が定義されます。disabled、readonly、autocomplete、listなども、すべての状態で同じ意味を持つとは限りません。
制約検証の対象になるかどうかは、属性名の一覧だけでは決まりません。状態、disabled・readonly等の条件、値の型、フォーム送信処理を合わせて確認する必要があります。
const field = document.querySelector('input');
field.type;
field.value;
field.validity;
field.checkValidity();
Labelとの関係
labelableな状態では、label要素のforとinputのidを対応させるexplicit association、またはlabelの子孫に置くimplicit associationを使えます。placeholderはlabelの代替ではありません。
<label for="email">メールアドレス</label>
<input id="email" name="email" type="email" autocomplete="email">
DOM Interface
input要素はHTMLInputElementとして公開されます。共通のvalueやtypeだけでなく、checked、files、valueAsDate、valueAsNumber、validity、labels、stepUp()など、状態に依存するAPIを持ちます。
Fact / Evidence(主張 / 根拠)
主要Factを、適用条件・確認状態・仕様上の根拠位置と対応付けています。未完了の範囲は下のCoverage / Open Issuesに残しています。
| 種別 | Fact / 主張 | 条件・範囲 | 状態 | 根拠 |
|---|---|---|---|---|
| SPEC | type属性が、inputの状態と状態ごとの意味・処理を選びます。 | 属性が省略・無効、または定義済みkeywordの場合。 | 確認済み | HTML Standard: type states |
| SPEC | typeを省略した場合や無効な値の場合は、Text状態が選ばれます。 | missing-value defaultまたはinvalid-value defaultが適用される場合。 | 確認済み | HTML Standard: type states |
| SPEC | inputはvoid elementであり、子要素を持てません。 | すべてのinput状態で終了タグを持たない構造。 | 確認済み | HTML Standard: the input element |
| SPEC | labelとの関連付けは、labelableな状態でexplicitまたはimplicit associationを使います。 | label[for]と一致するid、またはlabelの子孫に置く方法。 | 確認済み | HTML Standard: the label element |
| SPEC | constraint validationと適用可能なAPIは、選択された状態と条件に依存します。 | 状態、disabled・readonly、値の型、form contextを合わせて確認する場合。 | 確認済み | HTML Standard: constraint validation |
Evidence
- HTML Standard: The input element — 意味、category、content model、属性、DOM interface
- HTML Standard: States of the type attribute —
typeの各状態、適用範囲、状態別処理 - HTML Standard: The label element — labelable controlとの関連付け
- HTML Standard: Form control infrastructure — form-associated、constraint validation、フォームコントロールの共通基盤
Implementation Evidence
仕様上の主張とは別に、ブラウザー実装・WPT・アクセシビリティ観測を記録します。未実施の項目は確認済みとは扱いません。
共通fixture / 記録: <form id="evidence-form" method="get">内に、type省略のinput、for/idによる明示関連、label内inputの暗黙関連、required、disabled、submitとtype省略のbuttonを配置しました。環境: Chrome 152.0.0.0(Windows NT 10.0) / 確認日 2026-09-12。
| 種別 | 再現確認の範囲 | 記録する条件 | 状態 |
|---|---|---|---|
| IMPL | type既定値、label関連付け、form owner、constraint validation、disabled state | 共通fixtureをChrome 152.0.0.0 / Windows NT 10.0で確認。type省略はtext、明示・暗黙のinputは各labels.length=1、form ownerはevidence-form、requiredは:invalid、disabledは:disabledに一致しました。 | 確認済み(Chrome 1台) |
| WPT | type state、label、validationに関係するテストとの対応 | 対応候補: default-type.html、input-labels.html、input-checkvalidity.html。2026-09-15 / Chrome 152.0.0.0 / Windows NT 10.0 / wpt.liveで3件を実行し74/74 pass。選定外のWPTと他ブラウザーは未評価 | 部分実行(74/74 pass) |
| AAM | labelから導かれるaccessible name、required・disabled stateのブラウザーAX観測 | 同じfixtureのAccessibility treeで、明示・暗黙label付きinputがそれぞれ「Explicit name」「Implicit email」のtext fieldとして表示され、required fieldとdisabled fieldも表示されました。 | 観測済み(Chrome AX) |
WPTの対応付けにはWPTリポジトリ、アクセシビリティの基準にはHTML-AAMを参照します。
Coverage / Open Issues
- 確認済みtyped data field、typeの状態選択、void要素、主要category、labelとの関係、HTMLInputElementの概要
- 未完了全type状態についての属性適用表、値サニタイズ、変換規則、イベントの完全な追跡
- 未完了フォーム送信のentry list生成、successful controls、form-associated要素間の処理順序
- 未完了ARIA・platform accessibility mapping、ブラウザー別実装結果、WPT、歴史的変更
このページは初期Coverageです。確認済みの範囲を示すものであり、input要素全体の検証完了や公開可能性を主張しません。
Related surface
初心者向けのtypeの選び方、label、フォーム例はYugienのinput要素ページを参照してください。labelable要素との関連付けとaccessible nameはAtlasのlabel要素、リンクの条件とactivation behaviorはAtlasのa要素で確認できます。