PR

【HTML】form:入力フォームの作成方法を3分で解説

HTML

formタグは、Web上でユーザーからの入力を受け取るための入力フォームを作成するためのタグです。formタグを使用することで、テキスト入力、選択ボックス、ラジオボタン、チェックボックスなど、さまざまな形式の入力フォームを作成することができ、同時にその内容を指定したサーバー側に送信することができます。

お問い合わせフォームや、ログイン画面などのユーザに何かしらの入力を求める画面を作成する際に利用します。

HTML 入力フォーム
図1:入力フォームの例

ポイント 基本的な使い方

<form action="送信先URL" method="送信方法">
  <!-- 入力フィールドやボタン等 -->
</form>
  • action属性:フォームデータを送信するサーバーのURL
  • method属性:データの送信方法を指定(GETPOSTが主)

「入力フォームを作成する」と聞くと、初心者にとっては難しく感じてしまうかもしれませんが、実はHTML自体は結構簡単に作成することができます。(難しいのは、入力された内容を処理するサーバ側の設定です。)

このページでは、formタグを用いて初歩的な入力フォームを作成するために必要な知識を網羅的に解説します。このページの内容を理解すれば、すぐ自分一人でフォーム作成ができるようになることを目指します。

このページで学べる内容
  • フォームの基本構造
  • formタグの意味と使い方
    • labelタグ
    • inputタグ
    • selectタグ
    • textareaタグの意味と使い方
  • プルダウン・パスワードボックスなどの作り方・基本

Webエンジニアを目指す方であれば知らないと恥ずかしい超・基本知識の1つです。是非最後までご覧ください。

スポンサーリンク

【HTML】FORMタグとは

formタグは、HTMLにおいてフォーム要素(テキストボックス、チェックボックス、ラジオボタンなど)を配置し、ユーザーからの入力データを収集・送信するための機能を提供します。

わかりやすく説明すると入力機能を作成するというイメージです。使ったことがある方はgoogle formをイメージしてもらえるとOK。

以下がFORMタグのサンプルと実行結果です。

See the Pen HTML FORM by ビズドットオンライン (@biz-online) on CodePen.

ご覧いただいたように、formタグを利用することで、テキストで入力する項目やラジオボタン、チェックボックスなど様々な項目から構成される入力フォームを作成することとができます。

このページでは、以下のサンプルコードを例にformタグの基本的な構成や利用方法を順を追ってご説明します。

サンプルコード

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="utf-8">
    <title>初めての入力フォーム</title>
</head>
<body>
    <form method="get" action="form.html">
        <div>
		<label for="shimei">氏名</label>
        	<input type="text" name="shimei" placeholder="例:鈴木一郎">
	</div>
	<div>
        	<label for="pass">パスワード</label>
        	<input type="password" maxlength="8" name="pass" placeholder="例:pass1234">
	</div>
	<div>
		<label for="tel">電話番号</label>
		<input type="tel" name="tel" palceholder="090XXXXXXXX">
	</div>
	<div>
		<label for="sei">性別</label>
        	<input type="radio" name="sei" value="男" checked="checked">:男
        	<input type="radio" name="sei" value="女">:女
	</div>
	<div>
        	<label for="course">希望コース</label>
        	<input type="checkbox" name="course" value="html">html
        	<input type="checkbox" name="course" value="css">css
        	<input type="checkbox" name="course" value="javascript">javascript
	</div>
	<div>
        	<label for="old">年齢</label>        	
        	<select name="old">
            		<option value="20">20代</option>
            		<option value="30">30代</option>
            		<option value="40">40代</option>
            		<option value="50">50代</option>
        	</select>
	</div>
	<div>
        	<label for="free">自由記述欄</label> 
        	<textarea name="free" rows="1" cols="40" placeholder="自由に意見を記述してください"></textarea>
	</div>
    </form>
</body>
</html>

早速、フォームの基本「form」タグから解説を進めていきます。

HTML:FORMの基本構造

フォームは「formタグ」で全体を囲み、その中に各種フォーム部品が存在するという構造をとります。

FORMタグの使い方
図2:FORMタグの使い方

formタグでフォームの枠を作成し、実際の入力項目はinputタグやbuttonタグで指定していきます。

<form action="URL" method="GET/POST">
  <!-- フォーム要素(入力欄、ボタンなど) -->
</form>

この構造を理解したうえで、FORMタグとその中の入力要素について学習していきましょう。

formタグ

基本的なformタグの構文は以下の通り。

<form action="URL" method="GET/POST">
  <!-- フォーム要素(入力欄、ボタンなど) -->
</form>

ここではaction属性とmethod属性について解説します。

formタグ:action属性

action属性にはフォームデータを送信する先のURLを指定します。通常はサーバーサイドのスクリプト(PHPやPythonなど)が実行されるURLを指定します。

<form action="submit_form.php" method="POST">
  <!-- フォーム要素(入力欄、ボタンなど) -->
</form>

上記の例ではaction属性に「submit_form.php」というphpスクリプトを指定しています。このスクリプトは、フォームデータを処理し、必要に応じてデータベースへの保存やメール送信などの処理を行うことを想定しています。

action属性の注意点
  • セキュリティ:action属性に指定するURLは信頼できるサーバー側のプログラムを指定する必要があります。仮に悪意のあるプログラムを指定し待ったりすると、ユーザーの情報が不正に収集されてしまいます。
  • 相対パスと絶対パス:action属性の値として、相対パスや絶対パスを使用することができます。相対パスを使用する場合、フォームデータの送信先は現在のページと同じディレクトリ構造に基づきます。絶対パスを使用する場合、送信先はドメインのルートディレクトリからのパスを指定します。
  • 同一ページ内でのフォーム処理:action属性に空の値(action="")や現在のページのURLを指定すると、フォームデータは現在のページに送信されます。これは、フォーム処理を同じページで行いたい場合に役立ちます。
  • クロスオリジンリクエスト:異なるオリジン(ドメイン、プロトコルポート番号が異なる)に対してフォームデータを送信する場合、ブラウザによる同一オリジンポリシーによって制限を受けることがあります。

formタグ:method属性

method属性は、フォームデータを送信する際のHTTPメソッド(通信方法)を指定します。一般的にはGETまたはPOSTが使用されます。

<form method="get" action="form.html">
         <!-- フォームの各種部品 --> 
</form>
GET vs POST
  • GET
    データをURLのクエリパラメータとして含めて送信する方法。
    例: https://example.com/search?q=aaaa
  • POST
    データをHTTPリクエストの本文(ボディ)に含めて送信する方法。

GETには以下のような注意点があるため、近年ではPOSTを利用するパターンが主流です。

method属性の注意点
  • データの機密性:GETメソッドは、フォームデータがURLに含まれる(=URLを盗み見られる可能性がある)ため、機密性の高い情報(パスワード、個人情報など)を送信する場合は適切ではない。
  • ブラウザの履歴:GETメソッドで送信されたデータは、ブラウザの履歴にURLとして保存されることがあります。→これも、機密性の高い情報を送信する際には注意が必要です。
  • データサイズ:GETメソッドで送信できるデータサイズは、URLの長さ制限によって制約を受けます。大量のデータやファイルアップロードを行う場合は、POSTメソッドを使用してください。
  • キャッシュ:GETメソッドは、ブラウザやプロキシによってキャッシュされる可能性があります。このため、キャッシュを回避する必要がある場合や、データの更新を行う場合にはPOSTメソッドを推奨します。

FORMの基本はここまで。ここからは具体的に入力項目を作成するためのタグの使い方についてご説明していきます。

inputタグ

inputタグは、ユーザが入力するテキストボックスや、チェックボックス、ラジオボタンなどを作成するために用いられます。

<input type="input_type" name="input_name" value="default_value">
  • type属性:入力欄の種類。テキストボックス、パスワード欄、チェックボックス、ラジオボタン、ボタンなど。
  • name属性:入力欄に対する一意の識別子。この値は、サーバー側でフォームデータを識別するためのキーとして使用されます。
  • value属性:入力欄のデフォルト値。任意ですが、例えば氏名項目に「山田 太郎」と初期表示したいような場合に便利。

inputタグ:type属性

ラジオボタン、テキストボックスなどはtype属性で指定します。対応する属性値は事前に決められており、適切なものを選択して記述する必要があります。誤ったtype属性を指定すると、期待した動作をしないフォームが表示されることがあるため、要注意。

種類属性値
テキストボックスtype="text"
パスワードボックスtype="password"
ラジオボタンtype="radio"
チェックボックスtype="checkbox"
電話番号type="tel"

inputタグ:name属性

name属性は、対象のテキストボックスを一意に区別するための属性です。サーバサイドでは、このname属性の情報を用いて、送られてきたデータが何の項目なのかを判別することになります。

また、name属性はページ後半で説明する「label」タグを用いる際にinputタグとlabelタグを紐づける役割を担います。

inputタグ:value属性

inputタグのvalue属性には、入力欄のデフォルト値を指定します。この属性は必須ではありません。どんな値を入力すればよいの?というのを分かりやすくすることができます。ユーザビリティを高める上で効果的です。

selectタグ

selectタグを用いることで、プルダウンを作成することができます。

プルダウンで表示させたい値は、selectタグの中に「optionタグ」をネストさせて定義します。

<select name="old">
	<option value="20">20代</option>
	<option value="30">30代</option>
	<option value="40">40代</option>
	<option value="50">50代</option>
</select>

textareaタグ

textareaタグを利用すると、複数行入力可能なテキストボックスを作成することができます。

普通のテキストボックスは、改行することができません。自由記述欄など、入力する内容に改行が含まれる想定の場合に、「textarea」を利用します。

<textarea name="free" rows="1" cols="40" placeholder="自由に意見を記述してください"></textarea>

labelタグ

labelタグは、フォームの各種部品の項目名(ラベル)を指定するタグです。

labelタグのfor属性と、各種部品のname属性で紐づきが決定されます。

labelタグと部品の紐づき

<label for="shimei">氏名
<input type="text" name="shimei" placeholder="例:鈴木一郎">

<label for="shimei">氏名</label>
<input type="text" name="shimei" placeholder="例:鈴木一郎">

Webエンジニアになりたい方は→完全無料のHTMLロードマップ

Webエンジニアを目指す方にとって避けては通れないベースとなる超・重要知識の1つがHTMLです。

以下のページでは、そもそもHTMLって何?何のために学習するの?という疑問に回答しつつ、HTMLを学習するためのロードマップ(全20記事)を整理しています

以下のページの内容をマスターすればHTMLの基本はOK。Webエンジニアを目指す方に、完全無料でかつ短時間で理解できるようにまとめましたので是非ご覧ください。

このWebサイトは現役のエンジニアが以下3点を目的として運営しています。

  1. 勉強:一度理解した内容を忘れないように。
    → アウトプットは「最強のインプット」である! 
  2. 備忘:忘れたとしても後から見返せるように。
    → 未来の自分への「お手紙」を書いています。 
  3. 共有:〇〇ってこうだったんだ!の感動をシェアできるように。
    → あなたの知識は誰かにとっての「価値ある情報」です。 

副業ブログの始め方はこちらから

スポンサーリンク
HTMLWEBデザイン
シェアする
ビズドットオンラインをフォローする
タイトルとURLをコピーしました