Menu

HTML の input type 一覧: input タグの全 22 種類

HTML の <input> タグの type をすべてまとめました。text、email、password、number、range、日付と時刻、color、file、hidden などについて、それぞれのチェック内容、スマートフォンで開くキーボード、共通の属性を解説します。

このページのコードはエディタで実行できます - 編集してすぐに結果を確認できます。

input タグとその type

<input> はフォームの入力欄で、その種類を type 属性で決めます。同じタグで、テキストボックス、スライダー、日付の選択、色の選択を作れます。下の各入力欄を試して Submit を押すと、フォームが送る内容が表示されます。

<input> は空要素なので終了タグはありません。name は値を送るときのキーで、value は最初の値です。type がないか綴りが間違っていると、普通のテキスト欄になります。

HTML の input type 一覧

type内容補足
text1 行のテキスト初期値
password点で表示されるテキストそれ自体は暗号化されないので HTTPS で送る
emailメールアドレス形式をチェックする。スマートフォンのキーボードに @ キーが出る
urlWeb アドレスhttps:// のようなスキームで始まる必要がある
tel電話番号モバイルで電話用のキーパッド、形式チェックなし
search検索ボックス消去ボタンが表示されることが多い
number数値スピンボタン、min、max、step
rangeスライダーもともと細かい値の入力には向かない。値は数値
date日付値は YYYY-MM-DD
time時刻値は HH:MM (24 時間制)
datetime-local日付と時刻、タイムゾーンなし値は YYYY-MM-DDTHH:MM
month年と月対応していないブラウザもある
week年と週番号対応していないブラウザもある
color色の選択値は小文字の #rrggbb
checkboxオンとオフの切り替えHTML のチェックボックス を参照
radioグループから 1 つを選ぶHTML のラジオボタン を参照
fileファイルの選択accept、multiple
hidden表示されずに送信される値ID やトークン用
submit送信ボタン<button type="submit"> のほうが柔軟
resetリセットボタン使ってよい場面はまれ
buttonそれ自体は何もしないボタンJavaScript 用
image画像で描かれた送信ボタンクリックした座標も送る

テキスト系の type とスマートフォンのキーボード

email、url、tel、search、text は、デスクトップではどれもテキストボックスに見えます。違いは入力チェックと、スマートフォンで開くキーボードです。この例では、ブラウザの判定に応じて枠線が緑か赤に変わります。

  • ブラウザにとって ada@example は有効なメールアドレスです。テキスト、@、ドメインがあるかを見るだけで、ドメインにドットがあるかは確認しません。本当のチェックはサーバーで行います。
  • example.com はスキームがないので有効な url ではありません。https://example.com なら有効です。
  • tel は何でも受け付けます。電話番号の形式は国によって違いすぎるので組み込みのチェックはありません。必要なら pattern を追加しましょう。
  • inputmode="numeric" は、type="number" の問題を起こさずにスマートフォンに数字キーボードを出させます。郵便番号、ワンタイムコード、カード番号に適しているのはこのためです。

number と range

どちらも min、max、step を受け付けます。number は正確な値のため、range は正確な数値がそれほど重要でない値のためのスライダーです。range のスライダーは数値を表示しないので、<output> と組み合わせましょう。

number の step の初期値は 1 なので、step="0.01" のない価格の入力欄はフォームの送信時に 4.99 を受け付けません。JavaScript では input.value は常に文字列です。数値が欲しいときは input.valueAsNumber を使います。

日付と時刻

日付と時刻の type では、ブラウザ独自の選択画面が開きます。読者に見える形式はロケールに従います (09/24/2026、24.09.2026) が、値は常に同じ決まった形式です。

サーバーが受け取り、JavaScript が読むのはこの決まった形式なので、「24.09.2026」を解析する必要はありません。min と max も同じ形式で指定します。datetime-local にはタイムゾーンがありません。タイムゾーンが重要なら、読者のタイムゾーンを使ってサーバーで変換しましょう。

color と file

accept="image/*" はファイルの選択を画像に限定します (スマートフォンではカメラも選べます)。accept=".pdf,.docx" のように拡張子も指定できます。これは選択画面へのヒントにすぎないので、ファイルの種類はサーバーで確認しましょう。multiple を付けると複数のファイルを選べます。実際にアップロードするには、フォームに method="post" と enctype="multipart/form-data" も必要です。

datalist で候補を出す

<datalist> を使うと、どんな値でも入力できるテキスト欄に候補のリストを付けられます。list 属性でつなぎます。

入力欄に「ja」と入力すると、一致する候補が表示されます。セレクトボックス と違い、リストにない値も入力できます。

input で使える属性

属性働き
name値を送信するときのキー
value最初の値
placeholder入力欄が空の間に表示されるヒント (ラベルではない)
required送信前に入力が必要
disabled使えなくなり、送信もされない
readonly編集できないが、送信はされる
autocomplete自動入力する内容: email、name、current-password、one-time-code、off
min、max、step数値、範囲、日付、時刻の制限
minlength、maxlengthテキスト系の type の長さの制限
pattern値全体が一致すべき正規表現
inputmodeスマートフォンに出すキーボード: numeric、decimal、email、tel、url
list<datalist> の id
multiple複数の値。email と file で使う
acceptfile で受け付けるファイルの種類

よくある間違い

  • 電話番号、郵便番号、カード番号に type="number" を使う。 これらは数量ではありません。tel、または text と inputmode="numeric" を使いましょう。
  • 価格の入力欄に step="0.01" がない。 小数の値がチェックで弾かれます。
  • placeholder をラベル代わりに使う。 読者が入力を始めると消えてしまいます。
  • セキュリティを accept や type="email" に頼る。 これらは便利機能にすぎないので、サーバーでもう一度チェックします。
  • 代替手段なしで type="month" や type="week" を使う。 普通のテキスト欄を表示するブラウザもあります。
  • 終了タグ </input> を書く。 <input> は空要素です。

よくある質問

HTML の input type は何種類ありますか?

22 種類です: button、checkbox、color、date、datetime-local、email、file、hidden、image、month、number、password、radio、range、reset、search、submit、tel、text、time、url、week。未知の type や type の指定がない場合は text として動きます。

HTML の input type の初期値は何ですか?

text です。type のない <input> や、ブラウザが知らない type の <input> は 1 行のテキスト欄になります。

電話番号や郵便番号に type="number" を使うべきですか?

いいえ。number は数量のためのもので、スピンボタンが付き、電話番号に含まれる +、空白、ハイフンを受け付けません。電話番号には type="tel"、郵便番号やカード番号のようなコードには type="text" と inputmode="numeric" を使いましょう。

input type date の値はどんな形式ですか?

画面上で読者にどんな形式で見えていても、値は常に 2026-09-24 のような YYYY-MM-DD です。表示は読者のロケールに従いますが、送信される値やスクリプトで読む値は変わりません。

input タグに終了タグは必要ですか?

不要です。<input> は空要素なので、<input type="text" name="city"> と書きます。終了タグ </input> は無効で、<input /> の自己終了のスラッシュは書いてもかまいませんが何の効果もありません。

Coddy programming languages illustration

Coddyでコードを学ぼう

始める