Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【HTML Living Standard】form属性の使い方

form属性の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

formプロパティは、HTMLにおけるフォーム関連要素がどの<form>要素に属するかを指定するために用いられるプロパティです。このプロパティは、<input>, <button>, <textarea>, <select>, <keygen>, <fieldset>, <object>, <output>といった特定の要素に適用可能です。

通常、これらの要素はユーザーからの入力を受け付け、サーバーにデータを送信するために<form>タグの中に配置されます。しかし、formプロパティを使用すると、親の<form>要素の外に配置された要素であっても、特定のフォームに関連付けることが可能になります。具体的には、このプロパティの値として、関連付けたい<form>要素のid属性の値を指定します。これにより、ウェブページ内のどこに要素があっても、指定されたフォームの一部としてデータが扱われ、フォーム送信時にそのデータも一緒に送信されます。

この機能は、ウェブページのレイアウト上の都合でフォーム要素を<form>タグの直接の子要素として配置できない場合や、複数のフォーム要素をページ内の異なる場所に分散させたい場合に非常に有用です。システムエンジニアを目指す初心者の方にとっては、複雑なユーザーインターフェース設計においてフォームの構造を柔軟に管理できる強力なツールとして理解してください。HTML Living Standardにおけるこの機能は、ウェブアプリケーション開発の自由度を高めるための重要な要素の一つです。

公式リファレンス: HTML attribute: form

構文(syntax)

1<input form="formId" type="text">

引数(parameters)

引数なし

引数はありません

戻り値(return)

戻り値なし

戻り値はありません

サンプルコード

HTML form属性でフォーム要素を関連付ける

1<!DOCTYPE html>
2<html lang="ja">
3<head>
4    <meta charset="UTF-8">
5    <meta name="viewport" content="width=device-width, initial-scale=1.0">
6    <title>form属性のサンプルコード</title>
7</head>
8<body>
9
10    <!--
11        form属性は、フォーム要素(例:<input>, <button>など)が
12        どの <form> 要素に属するかを指定します。
13        要素が <form> タグの内部にない場合でも、この属性を使用して特定のフォームに関連付けることができます。
14        属性の値は、関連付けたい <form> 要素の id と一致させる必要があります。
15    -->
16
17    <!-- id="userForm" という識別子を持つフォーム本体を定義 -->
18    <form id="userForm" action="/submit-data" method="post">
19        <h2>ユーザー情報登録</h2>
20        <label for="usernameInside">ユーザー名:</label>
21        <input type="text" id="usernameInside" name="username" required>
22        <br>
23        <!-- このボタンはフォーム内部にあり、id="userForm" に属します -->
24        <button type="submit">フォーム内から送信</button>
25    </form>
26
27    <hr>
28
29    <!--
30        以下の要素は <form> タグの外にありますが、
31        form="userForm" 属性により、上記の id="userForm" のフォームに関連付けられています。
32        そのため、これらの入力内容もフォームの送信時に一緒に送られます。
33    -->
34    <p>以下の項目はフォームの外にありますが、同じフォームに属します。</p>
35    <label for="emailOutside">メールアドレス:</label>
36    <input type="email" id="emailOutside" name="email" form="userForm" required>
37    <br>
38    <!-- このボタンもフォームの外にありますが、id="userForm" に属します -->
39    <button type="submit" form="userForm">フォーム外から送信</button>
40
41</body>
42</html>

HTMLのform属性は、<input><button>といったフォーム要素を、特定の<form>要素に関連付けるために使用されます。通常、これらの要素は<form>タグの内部に記述されますが、form属性を用いることで、物理的に<form>タグの外に配置された要素でも、論理的に特定のフォームの一部として扱えるようになります。

この属性の値には、関連付けたい<form>要素に設定されたidを指定します。例えば、id="userForm"というフォームがある場合、そのフォームに関連付けたい入力要素にはform="userForm"と記述します。これにより、フォームの内部にある要素と同様に、フォーム外の要素の入力内容も一緒に送信されるようになります。

form属性自体は、引数を取ったり特定の値を戻したりするものではなく、単に要素とフォーム間の関連付けを行う役割を持ちます。

サンプルコードでは、id="userForm"のフォームと、その内部に配置されたユーザー名入力欄や送信ボタンが示されています。さらに、フォームの外部に配置されたメールアドレス入力欄と別の送信ボタンにはform="userForm"が指定されています。この指定により、フォームの内外にある全ての要素がuserFormとして一つの塊となり、データがまとめて処理されることを確認できます。これにより、HTMLのレイアウトの自由度を高めながら、フォームの機能を維持することが可能になります。

HTMLのform属性は、<input><button>などのフォーム関連要素を、親となる<form>タグの外部に配置しながら特定のフォームに所属させたい場合に使用します。この属性の値には、関連付けたい<form>要素に設定されたidを正確に指定する必要があります。値が一致することで、たとえ離れた場所に要素があっても、同じフォームの一部として機能させることが可能です。form属性で関連付けられた外部の要素も、フォームが送信される際にはそのデータがまとめてサーバーへ送られます。idと属性値が一致しない場合、要素はどのフォームにも関連付けられず、データは送信されないため、正確なidの指定が非常に重要です。この属性により、柔軟なHTML構造と機能的なフォーム構築が実現できます。

HTMLフォーム送信の基本

1<!DOCTYPE html>
2<html lang="ja">
3<head>
4    <meta charset="UTF-8">
5    <meta name="viewport" content="width=device-width, initial-scale=1.0">
6    <title>HTMLフォーム送信の基本</title>
7</head>
8<body>
9
10    <!--
11        HTMLの<form>要素は、ユーザーからの入力を集めてサーバーに送信するために使われます。
12        action属性はフォームデータが送信される先のURLを指定します。
13        method属性はデータを送信するためのHTTPメソッド(例: GET, POST)を指定します。
14        通常、データを変更する操作にはPOSTメソッドを使用します。
15    -->
16    <form action="/submit-example" method="post">
17        <!--
18            <label>要素はフォームコントロールのキャプションを提供し、アクセシビリティを向上させます。
19            for属性は、対応するコントロールのidと一致させることで関連付けます。
20        -->
21        <label for="userName">名前:</label>
22        <!--
23            <input type="text">は一行のテキスト入力を受け付けるフィールドです。
24            id属性は<label>と関連付けるために、name属性はフォーム送信時にサーバー側でデータを識別するために必要です。
25            required属性は、このフィールドが必須であることを示します。
26        -->
27        <input type="text" id="userName" name="userName" required>
28        <br><br>
29
30        <!--
31            <button type="submit">は、フォームのデータをaction属性で指定されたURLに送信します。
32            このボタンをクリックすると、フォーム全体が送信されます。
33        -->
34        <button type="submit">データを送信</button>
35    </form>
36
37</body>
38</html>

HTMLのform要素は、ウェブページ上でユーザーからテキストや選択肢などの情報を集め、それを特定のサーバーへ送信するために使用されます。この要素自体には直接的な引数や戻り値はありませんが、ユーザーが入力したデータをブラウザが処理し、指定された宛先へ送信する一連の挙動を管理する役割を担います。

フォームがどこにデータを送信するかはaction属性で指定されたURLによって決まります。また、データの送信方法(HTTPメソッド)はmethod属性で設定し、一般的にURLに情報を付加するGETと、リクエストボディに情報を格納するPOSTが使われます。特に、データベースへの保存など、サーバー側のデータに変更を加える操作では、POSTメソッドを用いることが推奨されます。

フォーム内部には<input><textarea>といった入力フィールドが配置され、それぞれのフィールドにはname属性を付与することで、サーバー側でデータを識別できるようになります。<label>要素はfor属性と入力フィールドのid属性を関連付けることで、どの入力欄がどのような情報を求めているかを明確にし、ユーザーの操作性やアクセシビリティを向上させます。

ユーザーが入力内容を確定した後、<button type="submit">などの送信ボタンをクリックすると、フォーム内の全ての入力データがaction属性で指定されたURLへmethod属性に基づいた方法で送信されます。このように、form要素はウェブアプリケーションにおけるユーザー入力とサーバー間連携の基本的な仕組みを提供します。

HTMLのform要素のaction属性には、実際にサーバー側でデータを処理するプログラムのURLを指定する必要があります。サンプルコードの/submit-exampleはあくまで例であり、別途サーバー側の実装がなければ動作しません。method属性は、データの送信方法を指定します。データの参照にはGET、サーバーの状態を変更する操作にはPOSTを使うのが一般的です。POSTはURLにデータが表示されず、セキュリティ面で推奨されます。

input要素には、フォーム送信時にデータを識別するためのname属性が必須です。id属性はlabelとの関連付けやJavaScriptからの操作に用いられ、目的が異なりますのでご注意ください。required属性はクライアント側での必須入力チェックを提供しますが、悪意ある操作には対応できないため、必ずサーバー側でも厳密な入力値検証を実施してください。label要素とinput要素をfor属性とid属性で正しく関連付けることで、アクセシビリティが向上します。

関連コンテンツ

関連IT用語

関連プログラミング言語