Kodokon kodokon.com

フォーム: input, label, select, textarea, button

完全でアクセシブル、そして本番投入できるフォームを構築する。

10 分 · 3 問

このレッスンを Kodokon で開く

フォームは、ウェブ上のほぼすべてのやり取りへの入り口です。登録、検索、決済、問い合わせ。ページがどう構成されるかはもう知っているので、いよいよ実践に移りましょう。まずは黄金律を覚えてください。すべてのフィールドには name 属性を付けます。なぜなら、サーバーに送られるのは id ではなく それ だからです。

HTML
<form action="/subscribe" method="post">
  <label for="email">Email address</label>
  <input type="email" id="email" name="email" required>
  <button type="submit">Sign up</button>
</form>
最小限ながら完全な登録フォーム。

label / input のペアを見てください。label の for 属性はフィールドの id を指しています。この結びつきはスクリーンリーダーにとって不可欠です。また type="email" にも注目しましょう。ブラウザが無料で形式を検証し、モバイルでは適切なキーボードを表示します。他の type も日々役立ちます。numberdatepasswordcheckboxradio です。

HTML
<label for="country">Country</label>
<select id="country" name="country" required>
  <option value="">-- Choose a country --</option>
  <option value="fr">France</option>
  <option value="ca">Canada</option>
</select>

<label for="message">Your message</label>
<textarea id="message" name="message" rows="5"></textarea>
選択肢が決まっているときは select、自由記述には textarea。

最後の登場人物は button です。これは3つの type を受け付けます。submit(フォームを送信)、reset(フィールドをクリア)、そして button(単体では何もしない。JavaScript で動作を組み込む)です。思考練習: ブログ記事のフォームに、データを送信してはいけない「プレビュー」ボタンを追加します。どの type を与えますか? 答え: type="button" です。

HTML
<form action="/contact" method="post">
  <label for="topic">Subject</label>
  <select id="topic" name="topic">
    <option value="support">Technical support</option>
    <option value="billing">Billing</option>
  </select>

  <button type="submit">Send</button>
  <button type="button" id="preview-btn">
    Preview
  </button>
</form>
2つのボタン、2つの異なる挙動。

理解度チェック

このレッスンの要点をしっかり覚えているか確認しましょう。

  1. label をフォームのフィールドに結びつける属性はどれですか?
    • label の for 属性。フィールドの id を指す
    • name 属性。label とフィールドで同一にする
    • label の value 属性
    • フィールドの placeholder 属性
  2. フォーム内で、type 属性のないボタンの既定の type は何ですか?
    • submit
    • button
    • reset
  3. 複数行の長いテキストを入力するには、どの要素を使いますか?
    • type="text" の input
    • textarea
    • select
    • output