HTML: HTMLフォーム

最終更新:2026-10-13

フォーム(<form>)はウェブページがユーザーと対話する主要な方法です ― ログイン、登録、検索、お問い合わせなど、データ収集のすべてにフォームが使われます。

この節のタグ: <form> <input> <fieldset> <legend> <datalist> <option> <button> <select> <textarea>

1. フォームの基本

<form> タグはフォーム領域を定義し、その中にさまざまな入力コントロールを含めます。ユーザーが入力してフォームを送信すると、データがサーバーに送信されます。

▶ サンプル

▶ 試してみよう

2. よく使われる入力コントロール

<input> は最も多用途なコントロールです ― type 属性によってさまざまな入力形態に変わります。

▶ サンプル

▶ 試してみよう
💡 フォーム属性:action は送信先URLを指定します。method はリクエストメソッドを指定します(検索には get、ログイン/登録には post)。placeholder は入力のヒントを表示します。required はフィールドを必須にします。


3. フォームのグループ化とその他の要素

<fieldset> は関連するコントロールをグループ化し、<legend> はグループのタイトルを提供します。<datalist> は入力フィールドに事前定義された候補リストを提供します。

▶ サンプル

▶ 試してみよう

この節のタグ: <form> <input> <fieldset> <legend> <datalist> <option> <button> <select> <textarea>

❓ よくある質問

Q <form>タグのactionとmethod属性とは何ですか?
A actionはフォームデータを送信するサーバーのURLを指定し、methodは送信方法を指定します。methodには2種類あります:GETはデータをURLに追加します(検索クエリに適しています)、POSTはデータをリクエストボディに配置します(ログイン、登録、機密データに適しています)。サーバーで処理しない場合は、actionを省略し、JavaScriptのevent.preventDefault()で送信をインターセプトします。
Q radio(単一選択)とcheckbox(複数選択)の違いは何ですか?
A radioは単一選択で、同じグループ(name属性でグループ化)内で1つのオプションしか選択できません。checkboxは複数選択で、複数のオプションを同時に選択できます。重要なポイント:radioは互斥にするために同じname値を共有する必要があります。checkboxの名前は同じでも異なっていても構いません。どちらもcheckedでデフォルトの選択を設定します。
Q <button>のtype属性は何をするのですか?
A typeはボタンの動作を決定します:submit(デフォルト)はフォームをactionURLに送信し、resetはすべてのフォーム入力をクリアし、buttonにはデフォルトの動作がなく、JavaScriptでイベントをバインドする必要があります。注意:typeを書かないと、デフォルトはsubmitになり、フォームが意図せずに送信される可能性があります。常にtypeを明示的に指定することをお勧めします。
Q HTML5のフォームバリデーションで十分ですか?JavaScriptはまだ必要ですか?
A HTML5は基本的なバリデーション(required、minlength、patternなど)を提供し、シンプルなシナリオに対応できます。しかし、限界があります:1)エラーメッセージのスタイルをカスタマイズするのが難しい;2)複雑なバリデーション(パスワードの一致など)は不可能;3)ユーザーエクスペリエンスが不十分(タイミング、スタイルの不一致)。推奨事項:基本的な保護にはHTML5バリデーションを使用し、強化されたバリデーションとより優れたユーザーエクスペリエンスにはJavaScriptを使用します。

📖 まとめ

📝 練習問題

  1. 登録フォーム: ユーザー名、メール、パスワード、パスワード確認、性別(ラジオ)、興味(チェックボックス)、送信ボタン、リセットボタンを含む登録ページを作成してください。<fieldset> でグループ化してください。
  2. 入力候補: <datalist> を使って「都市選択」入力フィールドを作成し、入力中に東京、大阪、名古屋、福岡が自動的に候補表示されるようにしてください。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%