HTML / Element / Initial coverage

<textarea>要素

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

Technical Summary

textarea要素は、複数行のplain textを編集するform controlです。要素の内容は初期値を表し、ユーザー操作やDOM APIによる現在値とは区別されます。

textareaはform-associated、labelable、listed、submittable、resettableな要素です。nameformdisabled、制約検証、labelとの関連付けがフォーム処理に関係します。

意味・category・content model

textarea要素の基本構造
項目内容確認上の境界
意味複数行のplain text edit controlHTMLとして解釈する編集領域ではない
categoryflow、phrasing、interactive、listed、labelable、submittable、resettable、form-associated、palpableフォームコントロール共通の仕組みとlabel・送信・リセットが関係する
content modelText要素の内容は初期値であり、子孫要素を組み立てるHTML markupではない
tag omission開始タグ・終了タグとも省略不可空の入力欄でも終了タグを省略しない

ページの本文を編集するリッチテキスト領域とは異なり、textareaが扱うのはplain textです。表示上の行の折り返しと、フォーム送信時の値に追加される改行は同じとは限りません。

初期値・raw value・現在値

要素の内容はdefault valueです。ユーザーが入力するとraw valueが変わり、現在のAPI valueはtextarea.valueで取得します。textareaにはinputのような初期値用のvalue content attributeはありません。

<textarea id="note" name="note" rows="3">HTMLに書いた初期値</textarea>

<script>
  const note = document.querySelector('#note');
  note.value;        // 現在値
  note.defaultValue; // リセット時の基準値
</script>
値の3つの見方
概念意味主な利用箇所
raw valuetextareaに設定された値。正規化前の値仕様上の内部状態、ユーザー編集
API value改行をLFに正規化した値valuetextLengthminlengthmaxlength
form valueAPI valueに、必要ならwrap="hard"の折り返し改行を加えた値フォーム送信と関連する処理

ユーザー操作で値が変更されるとdirty value flagが立ちます。dirty value flagが立った後は、子テキストをDOMから変更しても現在値が同じように更新されるとは限りません。フォームリセットでは、dirty value flagが戻り、子テキストを基準に値が再設定されます。

編集可能性・readonly・disabled

textareaは、disabledでもreadonlyでもない場合にmutableです。mutableなとき、ユーザーエージェントは文字やLFの改行を編集できるようにします。

編集・検証・送信の境界
状態編集constraint validationフォーム送信
通常編集できるrequiredなどの条件に参加するnameなどの条件を満たせば対象になる
readonlyユーザーは編集できないconstraint validationから除外されるdisabledとは異なり、送信対象から自動的に除外されるわけではない
disabled操作できないconstraint validationから除外される値はフォーム送信の対象にならない

readonlydisabledは見た目を変えるための同義語ではありません。編集の可否、検証への参加、送信対象かどうかを別々に確認します。

主なcontent attributes

属性と条件
属性意味条件・注意点
name送信値とform.elements APIで使う名前名前がない場合、通常のフォーム送信entryには関係しない
formform ownerを明示する同じdocument内のformと関連付ける
required空でない値を要求するmutableで、form valueが空文字列ならmissingとなる
minlength / maxlength値の長さの下限・上限改行を正規化したAPI valueの長さが関係する
placeholder値が空のときの短い入力ヒントlabelの代わりにはならない
rows / cols表示する行数・1行の文字幅の目安rowsの既定値は2、colsの既定値は20。最終的な表示はCSSやUA実装にも依存する
wrap送信値の折り返し方法softは送信時に折り返し改行を加えず、hardは加える。hardではcolsが必要
dirname入力値のdirectionalityを送信する名前通常のvalueとは別のentryに関係する
autocompleteautofillのヒントform control共通のautocomplete処理と確認する
readonly / disabled編集・操作・検証・送信の状態を変えるreadonlyとdisabledの帰結を混同しない

改行の正規化とwrap

textareaの値には、目的に応じて3つの見方があります。raw valueは正規化されませんが、API valueでは改行がLF(U+000A)に正規化されます。フォーム送信で使われるvalueには、wrap="hard"の条件に応じて折り返し改行が追加されます。

wrapの状態表示上の折り返し送信値
soft(既定)表示上は折り返されうる表示上の折り返しだけでは改行を追加しない
hardcolsを基準に折り返されうるユーザーエージェントが折り返し改行を追加する

このため、画面で見えている行数と送信された文字列の改行位置を同一視できません。サーバー側で改行を処理する場合は、実際に受け取った値とwrapの条件を確認します。

フォーム送信と制約検証

textareaはform-associatedなsubmittable elementです。form ownerがあり、disabledでなく、送信に必要なnameなどの条件を満たす場合、textareaのform valueがentry listに関係します。

<form action="/messages" method="post">
  <label for="body">本文</label>
  <textarea id="body" name="body" required minlength="10"></textarea>
  <button type="submit">送信</button>
</form>

requiredが指定され、textareaがmutableで、valueが空ならconstraint validationでmissingになります。minlengthmaxlengthは値の長さ、readonlydisabledは検証参加の可否に影響します。ブラウザーの検証はサーバー側検証の代替ではありません。

DOM Interface

textarea要素はHTMLTextAreaElementとして公開されます。

HTMLTextAreaElementの主なAPI
API概要
value現在のAPI valueを読む・設定する。設定時はraw valueとdirty value flagに影響する
defaultValue子テキストを基準とする初期値を読む・設定する
textLengthAPI valueの長さを読む
selectionStart / selectionEnd選択範囲の位置を読む・設定する
setSelectionRange()選択範囲とdirectionを設定する
setRangeText()選択範囲のテキストを置換する
form / labelsform ownerと関連labelを読む
willValidate / validityconstraint validationへの参加と状態を読む
checkValidity() / reportValidity()制約検証を実行・報告する
cols / rows / wrap表示と送信時の折り返し条件を扱う

ユーザーによるraw valueの変更ではinputイベントが発生します。イベント処理で値を読む場合も、raw value、API value、送信時のvalueの境界を目的に応じて確認します。

Fact / Evidence(主張 / 根拠)

主要Factを、適用条件・確認状態・仕様上の根拠位置と対応付けています。ブラウザー実装やアクセシビリティツリーの観測は、仕様上の主張とは別に下のImplementation Evidenceへ分けています。

主要Factと根拠位置
種別Fact / 主張条件・範囲状態根拠
SPECtextareaは複数行のplain text edit controlで、要素の内容はdefault valueを表す。textarea elementの意味と初期状態。確認済みHTML Standard: the textarea element
SPECraw value、API value、form submissionで使うvalueは、改行とwrapの扱いが異なる。LF正規化とwrap="hard"の送信値。確認済みHTML Standard: value normalization
SPECユーザー編集でdirty value flagが立ち、フォームリセットではdefault valueを基準に値が戻る。初期値、DOM変更、ユーザー編集、reset algorithmの境界。確認済みHTML Standard: textarea reset algorithm
SPECrequiredはmutableなtextareaの空valueをmissingとして扱い、readonlyはconstraint validationから除外する。required、mutable、readonly、constraint validation。確認済みHTML Standard: validation conditions
SPECtextareaはform-associatedなsubmittable elementで、nameformdisabledが送信条件に関係する。form owner、entry list、disabled、フォーム関連API。確認済みHTML Standard: form control infrastructure
SPECHTML-AAMでは、通常のtextareatextbox roleとmultiline=trueに対応する。ネイティブ要素のaccessible role mapping。確認済みHTML-AAM: textarea

Evidence

  1. HTML Standard: The textarea element — 意味、category、content model、属性、値、リセット、DOM interface
  2. HTML Standard: Form control infrastructure — form owner、disabled、constraint validation、フォーム送信共通基盤
  3. HTML Accessibility API Mappings: textarea — textbox role、multiline state、accessible nameと状態のmapping
  4. WPT: textarea element tests — textareaの値、属性、フォーム連携に関係するテスト群
  5. WPT: input events and textarea editing — 編集操作とinput eventに関係するテスト例

Implementation Evidence

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

実測fixture / 環境: <form id="evidence-form" method="get">内に、初期値付きtextarea、空のrequired textarea、minlengthmaxlengthreadonlydisabledwrap="hard"、外部form owner、reset buttonを配置しました。Chrome 152.0.0.0(HeadlessChrome / Windows NT 10.0)で2026-09-13にDOM・ValidityState・FormDataを実測しています。

textarea要素の実装Evidence登録表
種別再現確認の範囲記録する条件状態
IMPL初期値、valuedefaultValue、dirty value flag、DOM変更、form reset実測結果(Chrome 152.0.0.0 / Windows NT 10.0 / 2026-09-13): 子テキスト由来の初期値はvaluedefaultValuetextContentが同じ。valueEditedに変更してもdefaultValuetextContentは変わらず、resetで初期値に戻った確認済み
IMPLrequiredminlengthmaxlengthreadonlydisabled、form owner、submission実測: 空のrequiredvalid=falsevalueMissing=true、値okでvalid。readonlywillValidate=false。disabled textareaはFormDataから除外され、外部form ownerのtextareaは含まれた。プログラムからの値設定ではtooShorttooLongが立たず、ユーザー編集経路は未実施未完了
IMPL改行、rowscolswrap="soft" / hard実測: wrap="hard"cols=4・値abcdefghijではFormDataの値がabcdef\nghijになった。表示上の折り返し、LF・CRLF差、cols変更は未実施未完了
WPTtextarea element、初期値・現在値、属性、selection、form submission、入力イベントtextarea element testsのうち、textarea-type.htmltextarea-minlength.htmltextarea-validity-valueMissing-inside-datalist.htmlを実行し、input events testも確認。2026-09-15 / Chrome 152.0.0.0 / Windows NT 10.0 / wpt.liveでtextarea選定テストは7/7 pass、input eventsは0/3 pass(action_sequence()未実装)。ディレクトリ内の残りのテストと他ブラウザーは未評価部分実行(7/10 pass)
AAMaccessible name、textbox role、multiline state、required・readonly・disabled statelabel付きtextareaと各状態をアクセシビリティツリーおよび支援技術で観測する。環境は実測後に登録する未実施

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

Coverage / Open Issues

  • 確認済みtextareaの意味、category、content model、初期値・現在値・defaultValue、主要属性、HTMLTextAreaElement APIの概要
  • 確認済みrequired、minlength、maxlength、readonly、disabled、form owner、フォーム送信の主要な境界
  • 確認済みraw value・API value・form value、LF正規化、wrapの基本的な関係
  • 未完了form submission algorithm、entry list、dirname、encoding、formdata eventの全分岐
  • 未完了wrap="hard"の折り返しアルゴリズム、改行・Unicode・文字数の実装差
  • 未完了実装Evidence、複数ブラウザー、WPT実行、HTML-AAM全mapping、支援技術観測、互換性、歴史的変更、Expert-gap Review

このページは初期Coverageです。確認済みの範囲を示すものであり、textarea要素全体の検証完了、すべてのブラウザーで同じ値や表示になること、または支援技術で同じ結果になることを主張しません。

Related surface

初心者向けの複数行入力、label、初期値、フォーム送信はYugienのtextarea要素ページを参照してください。フォーム送信の共通処理はAtlasのform要素、labelとの関連付けはAtlasのlabel要素、他のフォームコントロールとの境界はinput要素select要素button要素でも確認できます。