閉じる

HTMLのinput type=”text”の書き方と属性別の設定方法をわかりやすく解説

Webサイトにおけるユーザーインターフェース(UI)構築において、フォームはユーザーとサイトを繋ぐ最も重要な要素の一つです。

その中でも、一行のテキスト入力を受け付けるinput type="text"は、最も基本的かつ汎用性の高い入力部品と言えるでしょう。

2026年現在のWeb標準においても、この要素の正しい使い分けとアクセシビリティへの配慮は、高品質なWebサイト制作に欠かせないスキルとなっています。

本記事では、HTMLのinput type=”text”の基本的な書き方から、各種属性を活用した高度な設定方法までを詳しく解説します。

input type=”text”の基本構造と書き方

HTMLでテキストボックスを表示させるための最もシンプルな記述方法は、inputタグにtype="text"を指定することです。

HTML
<!-- 最もシンプルなテキストボックスの記述 -->
<input type="text">

この記述だけでブラウザには一行の入力欄が表示されますが、実際の運用ではname属性やid属性を組み合わせて使用するのが一般的です。

name属性は、フォームが送信された際にサーバー側でデータを受け取るための識別子として機能します。

一方、id属性は、ドキュメント内で特定の要素を一意に識別するために使用され、後述するラベル要素との紐付けやJavaScriptからの操作に活用されます。

HTML
<!-- 一般的なテキストボックスの構成例 -->
<input type="text" id="user-name" name="user-name">

このように、適切な属性を付与することで、プログラムが扱いやすいフォームを構築することが可能になります

主要な属性とその役割一覧

input type="text"には、入力挙動やバリデーションを制御するための多様な属性が用意されています。

主要な属性を以下の表にまとめましたので、用途に応じて使い分けを確認してください。

属性名役割・内容
value入力欄の初期値を設定します。
placeholder入力のヒントとなるプレースホルダーを表示します。
maxlength入力できる最大文字数を制限します。
minlength入力が必要な最小文字数を制限します。
required入力必須項目として設定します。
readonly編集不可(読み取り専用)の状態にします。
disabled要素を無効化し、値の送信も行われません。
pattern正規表現を用いて入力形式を制限します。

これらの属性を適切に組み合わせることで、JavaScriptを多用せずとも高度なユーザーインターフェースを実現できます

ユーザー体験を高める「ラベル」の重要性

テキストボックスを作成する際、決して忘れてはならないのがlabel要素との連携です。

label要素を使用することで、入力項目が何であるかを視覚的に示すだけでなく、スクリーンリーダーなどの支援技術を利用するユーザーにとっても分かりやすいフォームになります。

ラベルと入力欄を紐付けるには、labelタグのfor属性に、対象となるinput要素のid属性と同じ値を指定します。

HTML
<!-- ラベルとテキストボックスの紐付け -->
<label for="full-name">お名前:</label>
<input type="text" id="full-name" name="full-name">

ラベル部分をクリックした際に、対応するテキストボックスにフォーカスが当たるようになるため、クリック面積が広がりユーザビリティが向上します。

特にスマートフォンのような画面の小さいデバイスでは、ラベルのクリックによる操作性の向上は非常に大きなメリットとなります

バリデーション属性の活用と実践

フォームからの誤入力を防ぐためには、HTML標準のバリデーション機能を活用するのが効率的です。

required属性を付与するだけで、その項目が空の状態で送信しようとした際にブラウザが自動的に警告を表示してくれます。

また、文字数制限を行いたい場合にはmaxlength属性とminlength属性が有効です。

HTML
<!-- 必須入力かつ文字数制限のある例 -->
<label for="username">ユーザー名(3〜10文字):</label>
<input type="text" id="username" name="username" required minlength="3" maxlength="10">

さらに詳細な入力形式を指定したい場合は、pattern属性に正規表現を記述します。

例えば、半角英数字のみの入力を許可する場合は以下のように記述します。

HTML
<!-- 半角英数字のみ許可する例 -->
<label for="user-id">ユーザーID(半角英数字):</label>
<input type="text" id="user-id" name="user-id" pattern="^[a-zA-Z0-9]+$" title="半角英数字で入力してください">

title属性を併用することで、エラーが発生した際に表示されるメッセージを補助的に説明することが可能です。

入力を補助する便利な機能

ユーザーの入力負担を軽減するために、placeholder属性やautocomplete属性も積極的に活用しましょう。

placeholder属性は、何を入力すべきかの具体例を薄いグレーのテキストで表示するために使用されます。

ただし、入力が始まると消えてしまうため、重要な情報をplaceholderだけで説明するのは避けるべきです

HTML
<!-- プレースホルダーの使用例 -->
<label for="search">キーワード検索:</label>
<input type="text" id="search" name="q" placeholder="例:HTML 書き方">

また、ブラウザの自動補完機能を制御するautocomplete属性も重要です。

氏名や住所、メールアドレスなど、標準的な入力項目に対して適切な値を指定することで、ユーザーは過去の入力履歴から素早く項目を埋めることができます。

例えば、名前の入力欄であればautocomplete="name"を指定します。

HTML
<!-- 自動補完を有効にした例 -->
<label for="name">氏名:</label>
<input type="text" id="name" name="name" autocomplete="name">

読み取り専用と無効化の違い

フォームの値を変更させたくない場面では、readonly属性とdisabled属性のどちらかを選択します。

これら二つの属性は似ていますが、データの送信可否において決定的な違いがあります

readonlyはユーザーによる編集はできませんが、フォーム送信時にその値はサーバーへ送られます。

一方でdisabledは、編集ができないだけでなく、フォーム送信時にもその値は含まれません。

HTML
<!-- 読み取り専用(値は送信される) -->
<input type="text" value="編集不可のデータ" readonly>

<!-- 無効化(値は送信されない) -->
<input type="text" value="無効なデータ" disabled>

ユーザーに確認画面で内容を見せたいだけの場合はreadonlyを、特定の条件下で入力を完全に制限したい場合はdisabledを選択するといった使い分けが必要です。

CSSによるテキストボックスのデザインカスタマイズ

デフォルトのテキストボックスはブラウザごとにデザインが異なるため、CSSでスタイリングを行うのが一般的です。

基本的な幅の調整や余白、境界線の設定は以下のように記述します。

CSS
/* テキストボックスの基本スタイル */
input[type="text"] {
  width: 100%;
  padding: 10px;
  font-size: 16px;
  border: 1px solid #ccc;
  border-radius: 4px;
  box-sizing: border-box; /* パディングを含めた幅計算 */
}

/* フォーカス時のスタイル */
input[type="text"]:focus {
  border-color: #007bff;
  outline: none;
  box-shadow: 0 0 5px rgba(0, 123, 255, 0.5);
}

特に:focus疑似クラスを用いたスタイリングは、ユーザーが現在どこを入力しているかを視覚的に示すために不可欠です。

outline: none;を指定する場合は、代わりにボーダーの色を変えたりシャドウを付けたりして、アクセシビリティを損なわないよう注意してください。

セキュリティ上の注意点

input type="text"は非常に便利な要素ですが、セキュリティへの配慮も欠かせません。

HTML側でバリデーションを設定していても、悪意のあるユーザーはブラウザのデベロッパーツールを使って制限を回避することが可能です。

そのため、データの検証はフロントエンドだけでなく、必ずサーバー側でも実施する必要があります

また、パスワードのような機密情報を入力させる場合には、type="text"ではなくtype="password"を使用すべきです。

type="text"で入力された内容は画面上に平文で表示されるため、ショルダーハッキングのリスクを高めてしまいます。

まとめ

HTMLのinput type="text"は、Webサイトのインタラクションにおいて最も基本となる要素です。

単に記述するだけでなく、label要素によるアクセシビリティの向上や、requiredmaxlengthなどの属性を駆使したバリデーション、そしてCSSによる適切なスタイリングを組み合わせることが重要です。

2026年のWeb開発においても、これらの基本を忠実に守ることが、ユーザーにとってストレスのない優れたWebフォームの構築に繋がります。

今回解説した各種属性を、ぜひ明日からのプロジェクトに活用してみてください。

URLをコピーしました!