←
慈愛結ノ宮縁側だより

サイト制作

HTMLのreadonlyとdisabledの違い 送信される値と操作を確認

慈愛妃きづな

2026-11-02

この記事には広告・アフィリエイトリンクが含まれます。

画面に表示されたプログラムのコード
画面に表示されたプログラムのコード。制作環境のイメージ写真。本文の実装例の画面ではありません。 公開日:2024-06-24(撮影日不明)。掲載用に縮小。 / a computer screen with a bunch of code on it / Glen Carrie / Unsplash License · 画像出典 · Unsplash License

readonlyは対応する入力欄を編集不可にしても、通常のフォーム送信では値を残せます。disabledは無効化されたコントロールを送信対象から外します。見た目だけで使い分けないことが大切です。

大きな違いは、送信対象に残るかどうか

HTMLの入力欄を変更できなくしたいとき、readonlyとdisabledは同じ意味ではありません。readonlyは対応する欄を読み取り専用にし、disabledはコントロールを無効化します。

通常のHTMLフォーム送信では、disabledの値は送信されません。一方、readonlyの欄は、nameなど他の送信条件を満たしていれば値が送られます。画面に表示されていても、サーバーに届くとは限らないんですね。

フォーカスと対応する要素も違う

readonlyの入力欄は通常フォーカスを受け取り、内容を選択してコピーできます。disabledの欄は通常フォーカスを受け取りません。

ただしreadonlyが使えるのは、テキスト系のinputやtextareaなど、対応する要素・入力型です。select、チェックボックス、ボタンに付けても同じ読み取り専用の挙動にはなりません。対象の要素を先に確認しましょう。

CSSで灰色にするだけでは、どちらの属性の働きも再現できません。操作できない理由があるなら、近くに短い説明も添えると状況を伝えやすくなります。

ノートパソコンとキーボードを置いた机
ノートパソコンとキーボードを置いた机。制作環境のイメージ写真。本文の実装例の画面ではありません。 公開日:2019-01-21(撮影日不明)。掲載用に縮小。 / workspace desk with keyboard and laptop / Patrik Michalicka / Unsplash License · 画像出典 · Unsplash License

会員番号を見せる例で考える

たとえば確認画面で、会員番号を表示してコピーできるようにし、通常のフォームにも含めたい場合は、対応するテキスト入力のreadonlyが候補です。一方、条件がそろうまで使わせない選択欄ならdisabledを検討します。

これは画面の操作方法の話です。属性はブラウザー側で変更できるため、編集不可の表示を、値の正しさの保証として扱ってはいけません。サーバー側で必要な値の検証や権限確認を行う前提で設計します。

見た目ではなく、送信結果まで確認する

確認用のフォームでは、通常・readonly・disabledの三つのテキスト欄に異なるnameを付け、同じ値を入れて送信すると差を追いやすくなります。テスト用の値を使い、送信内容にどのnameが含まれたかを確認してください。

JavaScriptで独自に送信データを組み立てる実装は、HTML標準の送信と異なる結果になる場合があります。Tabキーで移動できるか、コピーできるか、送信値が残るかを、実装した方式で確かめるところまでが使い分けです。

読み物の一覧へ

慈愛妃きづなについて・記事の編集方針

あわせて読みたい関連記事

記事一覧へ