フォーム
ユーザーからの入力を受け取る仕組み
フォームとは?
日常での例え:紙のアンケート用紙
名前を書く欄
選択肢にチェック
「提出」ボタンを押す
テキスト入力欄(input)
チェックボックス・ラジオボタン
「送信」ボタン
なぜフォームが必要?
Webページは通常「一方通行」で情報を見るだけ。
フォームがあると、ユーザーが情報を送信できる。
→ ログイン、会員登録、問い合わせ、検索など
フォームの基本構造
フォームの3つの要素
form、入力欄、送信ボタン
<!-- form: フォーム全体を囲む「箱」 -->
<!-- action: 送信先のURL -->
<!-- method: 送信方法(POST/GET) -->
<form action="/submit" method="POST">
<!-- label: 入力欄の説明(「名前:」の部分) -->
<!-- for: どのinputと紐づくか(idと同じ値) -->
<label for="name">名前:</label>
<!-- input: 実際の入力欄 -->
<!-- id: labelと紐づける識別子 -->
<!-- name: サーバーに送る時のデータ名 -->
<input type="text" id="name" name="name">
<!-- button type="submit": 送信ボタン -->
<button type="submit">送信</button>
</form>label と for/id はなぜ必要?
ラベルをクリックすると入力欄にフォーカスが移る。
視覚障害者用の読み上げソフトも正しく動作する。
name属性はなぜ必要?
サーバーが受け取るデータの「項目名」になる。
例: name="email" → サーバーは「email」という名前でデータを受け取る
inputの種類(type属性)
type属性で入力欄の「種類」を指定
適切なtypeを選ぶと、スマホで専用キーボードが出たり、入力チェックが自動で行われる。
テキスト系の入力
文字を入力する
<!-- type="text": 普通のテキスト -->
<input type="text" placeholder="お名前">
<!-- type="email": メールアドレス -->
<!-- スマホでは@キーが表示される -->
<input type="email" placeholder="example@mail.com">
<!-- type="password": パスワード -->
<!-- 入力内容が●●●で隠れる -->
<input type="password" placeholder="パスワード">
<!-- type="tel": 電話番号 -->
<!-- スマホでは数字キーボードが出る -->
<input type="tel" placeholder="090-1234-5678">数値・日付の入力
数字や日付を専用UIで入力
<!-- type="number": 数値(上下ボタン付き) -->
<input type="number" min="0" max="100" value="50">
<!-- type="range": スライダー -->
<input type="range" min="0" max="100" value="50">
<!-- type="date": 日付(カレンダーが出る) -->
<input type="date">
<!-- type="time": 時刻 -->
<input type="time">選択系の入力
選択肢から選ぶ
<!-- checkbox: 複数選択可能 -->
<p>好きな果物(複数選択可)</p>
<label>
<input type="checkbox" name="fruits" value="apple"> りんご
</label>
<label>
<input type="checkbox" name="fruits" value="banana"> バナナ
</label>
<!-- radio: 1つだけ選択 -->
<!-- 同じname属性で「グループ」を作る -->
<p>性別(1つ選択)</p>
<label>
<input type="radio" name="gender" value="male"> 男性
</label>
<label>
<input type="radio" name="gender" value="female"> 女性
</label>好きな果物(複数選択可)
性別(1つ選択)
checkbox と radio の違い
• checkbox:複数選べる(「りんごとバナナ両方好き」)
• radio:1つだけ選ぶ(「男性か女性か」)
radioは同じnameを付けて「グループ」にする必要がある
その他のフォーム要素
textarea(テキストエリア)
長い文章を入力する欄
<!-- textarea: 複数行のテキスト入力 -->
<!-- rows: 表示する行数 -->
<!-- placeholder: 入力前に表示するヒント -->
<textarea
rows="4"
placeholder="お問い合わせ内容を入力してください..."
></textarea>select(セレクトボックス)
ドロップダウンで選択
<!-- select: ドロップダウンリスト -->
<!-- option: 選択肢 -->
<!-- value: サーバーに送られる値 -->
<select name="country">
<option value="">選択してください</option>
<option value="jp">日本</option>
<option value="us">アメリカ</option>
<option value="uk">イギリス</option>
</select>input と textarea と select の使い分け
• input:短い入力(名前、メールなど)
• textarea:長い入力(メッセージ、コメント)
• select:決まった選択肢から選ぶ(国、カテゴリ)
入力チェック(バリデーション)
バリデーションとは?
ユーザーが正しい形式で入力しているかチェックすること。
例:メールアドレス欄に「abc」と入力 → 「@が必要です」とエラー表示
HTML5のバリデーション属性
属性を付けるだけで自動チェック
<!-- required: 必須入力(空欄だと送信できない) -->
<input type="text" required placeholder="必須項目 *">
<!-- minlength/maxlength: 文字数制限 -->
<input type="text" minlength="3" maxlength="20"
placeholder="3〜20文字">
<!-- min/max: 数値の範囲制限 -->
<input type="number" min="1" max="100"
placeholder="1〜100の数値">
<!-- pattern: 正規表現でパターン指定 -->
<!-- 例: 郵便番号形式(123-4567) -->
<input type="text" pattern="[0-9]{3}-[0-9]{4}"
placeholder="123-4567">完成例:お問い合わせフォーム
実用的なフォーム
学んだ要素を組み合わせる
<form action="/contact" method="POST">
<!-- 名前(必須) -->
<div>
<label for="name">お名前 *</label>
<input type="text" id="name" name="name" required>
</div>
<!-- メール(必須、形式チェック) -->
<div>
<label for="email">メールアドレス *</label>
<input type="email" id="email" name="email" required>
</div>
<!-- カテゴリ(選択) -->
<div>
<label for="category">カテゴリ</label>
<select id="category" name="category">
<option value="general">一般</option>
<option value="support">サポート</option>
<option value="sales">営業</option>
</select>
</div>
<!-- メッセージ(必須、複数行) -->
<div>
<label for="message">メッセージ *</label>
<textarea id="message" name="message"
rows="5" required></textarea>
</div>
<!-- チェックボックス -->
<div>
<label>
<input type="checkbox" name="newsletter">
ニュースレターを受け取る
</label>
</div>
<button type="submit">送信</button>
</form>まとめ
覚えておくこと
- • formで全体を囲む
- • labelとinputはfor/idで紐づけ
- • typeで入力の種類を指定
- • requiredで必須入力に
よく使うtype
- • text, email, password
- • checkbox, radio
- • number, date
- • submit(送信ボタン)