本文へスキップ
ウェブエンジニア問題集
第7章

HTMLフォーム入門 — form・input・label・button

約6分
この章の目次開く

フォームは、ユーザーから入力を受け取るためのHTMLです。問い合わせ、ログイン、検索、アンケート、購入手続きなど、Webアプリの多くはフォームから始まります。

<form action="/contact" method="post">
  <label for="name">お名前</label>
  <input id="name" name="name" type="text" required>
 
  <button type="submit">送信</button>
</form>
html

フォーム要素のチートシート

タグ用途よく使う属性注意点
form入力欄のまとまりaction, method送信先と送信方法を決める
label入力欄の説明for対応する input の id と合わせる
input1行入力や選択type, id, name, requiredtype で役割が変わる
textarea複数行入力name, rows閉じタグが必要
select選択リストnameoption と組み合わせる
option選択肢value表示文と送信値を分けられる
buttonボタンtypesubmit/reset/buttonを明示する
fieldset関連する入力のグループなしradioなどのまとまりに便利
legendグループの見出しなしfieldset 内で使う

input のtype

type用途
text1行テキスト
emailメールアドレス
passwordパスワード
tel電話番号
urlURL
number数値
checkbox複数選択
radio単一選択
submit送信
<label for="email">メールアドレス</label>
<input id="email" name="email" type="email" required>
html

構文: <input type="種類" name="送信名">

属性説明
type入力欄の種類
name送信時のキー
idlabel for と対応させる識別子
required必須入力
placeholder入力例

戻り値: HTML要素なので戻り値はありません。フォーム送信時に name=value の形で値が送られます。

フォーム部品には、基本的に label と name をセットで付けます。

button 要素と type の使い分け

button 要素は、フォームの送信や画面上の操作を実行するための要素です。開始タグと終了タグの間に、ボタンへ表示する文字を書きます。

<button type="submit">送信する</button>
html

構文: <button type="ボタンの種類">表示する内容</button>

type には、主に次の3種類があります。

type動作主な用途
submitフォームを送信する「送信」「ログイン」「登録」
resetフォームの入力内容を初期状態に戻す入力内容の一括クリア
buttonそのままでは何もしないJavaScriptでメニューやダイアログを開く
<form action="/contact" method="post">
  <label for="message">お問い合わせ内容</label>
  <textarea id="message" name="message" rows="5"></textarea>
 
  <button type="reset">入力を戻す</button>
  <button type="submit">送信する</button>
</form>
html
属性説明
typeボタンの動作を指定する
nameフォーム送信時のキーを指定する
valuename と組み合わせて送信する値を指定する
disabledボタンを操作できない状態にする

戻り値: HTML要素なので戻り値はありません。submit はフォームを送信し、reset は入力内容を初期状態へ戻します。button は、JavaScriptで処理を追加して使います。

<input type="submit" value="送信"> でも送信ボタンを作れますが、button 要素なら文字だけでなくアイコンなども中に入れられます。通常は、内容を柔軟に作れる button 要素を使うとよいでしょう。

checkboxとradio

複数選択ならcheckbox、1つだけ選ぶならradioです。

<fieldset>
  <legend>学びたい内容</legend>
 
  <label>
    <input type="checkbox" name="topics" value="html">
    HTML
  </label>
 
  <label>
    <input type="checkbox" name="topics" value="css">
    CSS
  </label>
</fieldset>
html
<fieldset>
  <legend>経験年数</legend>
 
  <label>
    <input type="radio" name="experience" value="beginner">
    未経験
  </label>
 
  <label>
    <input type="radio" name="experience" value="experienced">
    経験あり
  </label>
</fieldset>
html

よくあるミス

ミス問題修正
label がない入力欄の意味が伝わりにくいlabel for と id を対応
name がない送信時に値が送られない各入力に name を付ける
button の type がない意図せずsubmitになることがあるtype を明示する
placeholderをlabel代わりにする入力後に説明が消えるlabelを別に置く

参考リンク

次章では、ページ全体の意味を整理するセマンティックHTMLを学びます。

HTMLクイズに挑戦するform、input、label、buttonの基本をクイズで確認しよう