0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【HTML入門】第9章 フォーム② いろいろな入力部品

0
Last updated at Posted at 2026-10-19

第8章では、1行のテキストの入力欄を使いました。この章では、ラジオボタン・日付・プルダウン・チェックボックス・複数行の入力欄を使って、社員の情報を入力するフォームを作ります。それぞれの部品で、何が送られるかを GET のアドレスバーで確かめます。

この章で学ぶこと

  • ラジオボタン(type="radio")と、文字を囲む <label>
  • 日付の入力欄(type="date")
  • プルダウン(<select>・<option>)
  • チェックボックス(type="checkbox")
  • 複数行の入力欄(<textarea>)
  • 送られる値を決める value 属性と、最初から選んでおく checked・selected 属性

9.1 この章で作るもの

この章では、ch09 フォルダーに、社員の情報を入力する画面 input.html と、送信先の result.html を作ります。入力画面には、次の5つの入力部品を並べます。

input.png
図9-1 この章で作る入力画面

入力部品 使う項目 書き方
ラジオボタン 性別 <input type="radio">
日付の入力欄 生年月日 <input type="date">
プルダウン 部署 <select>・<option>
チェックボックス 使える言語 <input type="checkbox">
複数行の入力欄 自己紹介 <textarea>

性別・生年月日・部署は、Spring入門の社員の入力画面と同じ書き方です。チェックボックスと複数行の入力欄は、Spring入門では使いませんが、よく使う部品なので、ここで練習します。

ファイル 作業 内容
ch09/result.html 新規 フォームの送信先のページ
ch09/input.html 新規 いろいろな入力部品を並べた入力画面

9.2 ファイルを作る

  1. webapp フォルダーを右クリックし、新規 → フォルダー で ch09 フォルダーを作ります。

  2. ch09 フォルダーに、テンプレート「新規 HTML ファイル (5)」を使って result.html を作り、次のように書いて保存します。

    ch09/result.html
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>送信結果</title>
    </head>
    <body>
      <h1>送信結果</h1>
      <p>送信された内容は、アドレスバーで確かめてください。</p>
      <p><a href="input.html">入力画面へ戻る</a></p>
    </body>
    </html>
    
  3. ch09 フォルダーに、同じ手順で input.html を作り、フォームの枠と送信ボタンを書きます。この章では、送られた値をアドレスバーで確かめるので、method="get" にします。

    ch09/input.html
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>社員の詳しい入力</title>
    </head>
    <body>
      <h1>社員の詳しい入力</h1>
      <form action="result.html" method="get">
        <table>
        </table>
        <button type="submit">送信</button>
      </form>
    </body>
    </html>
    

    9.3 からは、<table> と </table> の間に、入力部品の行を1行ずつ書き足していきます。

  4. 保存ボタンか Ctrl + S で保存し、タブの * が消えたことを確認します。

9.3 ラジオボタン

ラジオボタン は、いくつかの選択肢の中から1つだけを選ぶ部品です。性別の「男」「女」のように、どれか1つを選んでほしいときに使います。

  1. <table> の下に、性別の行を書き足します。

    ch09/input.html(table の部分)
        <table>
          <tr>
            <th>性別</th>
            <td>
              <label><input type="radio" name="gender" value="1"> 男</label>
              <label><input type="radio" name="gender" value="2"> 女</label>
            </td>
          </tr>
        </table>
    
  2. 保存して、Chrome で http://localhost/html/ch09/input.html を開きます。「男」を選んでから「女」を選ぶと、「男」の選択が外れることを確認します。「男」「女」の文字の部分をクリックしても選べることも確認します。

書いたもの 意味
type="radio" ラジオボタンを作る
name="gender" 選択肢のグループの名前。同じ name のラジオボタンの中から、1つだけを選べる
value="1" 選ばれたときに送られる値。「男」を選ぶと gender=1、「女」を選ぶと gender=2 が送られる
<label> ラジオボタンと、その横の文字を囲む。文字をクリックしても、ラジオボタンを選べるようになる

画面に表示される「男」「女」と、送られる値の 1・2 は別のものです。Spring入門の社員管理アプリでは、データベースに性別を 1(男)・2(女)の番号で入れるので、送る値も番号にしています。

【ご注意】ラジオボタンの name をそろえる

同じグループのラジオボタンには、必ず同じ name を書いてください。name が違うと、別のグループとして扱われ、「男」と「女」の両方を選べてしまいます。

9.4 日付の入力欄

  1. 性別の行の </tr> の下に、生年月日の行を書き足します。

    ch09/input.html(追加する行)
          <tr>
            <th>生年月日</th>
            <td><input type="date" name="birthDate"></td>
          </tr>
    
  2. 保存して、Chrome で再読み込みします。入力欄の右のカレンダーのアイコンをクリックすると、カレンダーから日付を選べることを確認します。

type="date" は、日付の入力欄を作ります。Chrome では 年/月/日 の形で表示されますが、送られる値は 2001-06-15 のように、年・月・日を - でつないだ形になります。

9.5 プルダウン

プルダウン は、クリックすると選択肢の一覧が開き、その中から1つを選ぶ部品です。選択肢が多いときに、画面を広く使わずに済みます。

  1. 生年月日の行の下に、部署の行を書き足します。

    ch09/input.html(追加する行)
          <tr>
            <th>部署</th>
            <td>
              <select name="deptId">
                <option value="">選択してください</option>
                <option value="1">総務部</option>
                <option value="2">営業部</option>
                <option value="3">開発部</option>
              </select>
            </td>
          </tr>
    
  2. 保存して、Chrome で再読み込みします。プルダウンをクリックして、部署を選べることを確認します。

書いたもの 意味
<select name="deptId"> プルダウンを作る。name は <select> に書く
<option value="1"> 選択肢の1つ。開始タグと終了タグの間の文字(総務部)が画面に表示され、選ばれると value の値(1)が送られる
<option value=""> 「選択してください」の選択肢。value が空なので、これを選んだまま送ると deptId= のように、値の無い組が送られる

最初の選択肢は、何も選んでいないときに表示されます。Spring入門の社員の入力画面でも、最初の選択肢を「選択してください」にしています。部署の番号(総務部が 1、営業部が 2、開発部が 3)は、Spring入門で作る部署のデータと同じです。

9.6 チェックボックス

チェックボックス は、いくつかの選択肢の中から、いくつでも選べる部品です。1つも選ばなくてもかまいません。

  1. 部署の行の下に、使える言語の行を書き足します。

    ch09/input.html(追加する行)
          <tr>
            <th>使える言語</th>
            <td>
              <label><input type="checkbox" name="skill" value="html"> HTML</label>
              <label><input type="checkbox" name="skill" value="css"> CSS</label>
              <label><input type="checkbox" name="skill" value="java"> Java</label>
            </td>
          </tr>
    
  2. 保存して、Chrome で再読み込みします。チェックボックスを2つ以上選べることと、もう一度クリックすると選択が外れることを確認します。

書き方はラジオボタンと同じで、type が checkbox になっています。チェックボックスでは、同じ name でも、いくつでも選べます。選んだものの数だけ、skill=html&skill=java のように、同じ名前の組が送られます。

9.7 複数行の入力欄

  1. 使える言語の行の下に、自己紹介の行を書き足します。

    ch09/input.html(追加する行)
          <tr>
            <th>自己紹介</th>
            <td><textarea name="comment"></textarea></td>
          </tr>
    

    <textarea> と </textarea> の間には、空白も改行も入れずに続けて書きます。

  2. 保存して、Chrome で再読み込みします。自己紹介の欄に、Enter キーで改行しながら2行以上入力できることを確認します。

<textarea> は、複数行の文章を入力する欄を作ります。<input> と違って、終了タグの </textarea> を書きます。開始タグと終了タグの間に書いた文字は、最初から入力欄に入った状態で表示されます。

【知識メモ】textarea の中では、改行と空白がそのまま表示される

第3章で、「ソースの改行や、続けて入力した空白は、まとめて空白1つとして表示される」と学びました(第3章「ソースで改行してみる」)。<textarea> の中は、この決まりの例外です。<textarea> と </textarea> の間に書いた改行や空白は、そのまま入力欄に表示されます。間に空白や改行を入れずに続けて書くのは、空白や改行が、入力欄に最初から入ってしまわないようにするためです。

たとえば、<textarea> の中の文字を、ほかのタグと同じように改行してインデントすると、そのインデントの空白や改行も、入力欄の中に入ってしまいます。

textarea-space.png
図9-2 textarea の中でインデントすると、空白や改行も入力欄に入る

9.8 送信して確かめる

ここまでで、input.html は次のようになっています。

ch09/input.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>社員の詳しい入力</title>
</head>
<body>
  <h1>社員の詳しい入力</h1>
  <form action="result.html" method="get">
    <table>
      <tr>
        <th>性別</th>
        <td>
          <label><input type="radio" name="gender" value="1"> 男</label>
          <label><input type="radio" name="gender" value="2"> 女</label>
        </td>
      </tr>
      <tr>
        <th>生年月日</th>
        <td><input type="date" name="birthDate"></td>
      </tr>
      <tr>
        <th>部署</th>
        <td>
          <select name="deptId">
            <option value="">選択してください</option>
            <option value="1">総務部</option>
            <option value="2">営業部</option>
            <option value="3">開発部</option>
          </select>
        </td>
      </tr>
      <tr>
        <th>使える言語</th>
        <td>
          <label><input type="checkbox" name="skill" value="html"> HTML</label>
          <label><input type="checkbox" name="skill" value="css"> CSS</label>
          <label><input type="checkbox" name="skill" value="java"> Java</label>
        </td>
      </tr>
      <tr>
        <th>自己紹介</th>
        <td><textarea name="comment"></textarea></td>
      </tr>
    </table>
    <button type="submit">送信</button>
  </form>
</body>
</html>
  1. Chrome で再読み込みし、次のように入力します。

    項目 入力・選択する内容
    性別 女 を選ぶ
    生年月日 2001/06/15 を入力する
    部署 開発部 を選ぶ
    使える言語 HTML と Java を選ぶ
    自己紹介 よろしくお願いします。 と入力する

    input-filled.png
    図9-3 入力したところ

  2. 「送信」をクリックし、result.html のアドレスバーを確認します。

    chrome-get-url.png
    図9-4 送信したときのアドレスバー(赤枠)

アドレスバーの ? の後ろには、次の組が & でつながって表示されます。URL が長いので、最後の comment=… の部分は「…」で省略されて表示されます。アドレスバーをクリックすると、URL の全体を確かめられます。

送られた組 入力部品 送られる値
gender=2 ラジオボタン 選んだ「女」の value
birthDate=2001-06-15 日付の入力欄 年・月・日を - でつないだ日付
deptId=3 プルダウン 選んだ「開発部」の <option> の value
skill=html・skill=java チェックボックス 選んだものの数だけ、同じ名前で送られる
comment=… 複数行の入力欄 入力した文章

ラジオボタンとチェックボックスは、何も選ばずに送ると、その組そのものが送られません。プルダウンは、「選択してください」のまま送ると deptId= のように値の無い組が送られます。Spring入門では、こうした「選んでいない」状態を、入力チェックで見つけてエラーのメッセージを表示します。

9.9 最初から選んでおく

入力画面を開いたときに、最初からある選択肢を選んだ状態にしておくこともできます。社員の情報を変更する画面のように、今のデータを表示しておきたいときに使います。

入力部品 書き方 例
テキストの入力欄 value 属性に、最初に入れておく文字を書く <input type="text" name="name" value="雷禅 海皇">
ラジオボタン・チェックボックス 選んでおくものに checked を書く <input type="radio" name="gender" value="1" checked>
プルダウン 選んでおく <option> に selected を書く <option value="2" selected>営業部</option>
複数行の入力欄 開始タグと終了タグの間に、最初に入れておく文字を書く <textarea name="comment">よろしくお願いします。</textarea>

checked と selected は、="値" を付けずに、属性の名前だけを書きます。書いてあれば「選んである」、書いていなければ「選んでいない」という意味です。

  1. 試しに、性別の「男」の <input> に checked を、部署の「営業部」の <option> に selected を書き足して保存します。

    ch09/input.html(書き足す場所)
              <label><input type="radio" name="gender" value="1" checked> 男</label>
              …
                <option value="2" selected>営業部</option>
    
  2. Chrome で input.html を再読み込みし、「男」と「営業部」が最初から選ばれていることを確認します。

  3. 確認したら、書き足した checked と selected を消して保存します。

【便利な使い方】再読み込みしても選択が変わらないとき

Chrome は、再読み込みのときに、直前まで選んでいた内容を残すことがあります。checked や selected を書いたのに表示が変わらないときは、アドレスバーをクリックして Enter キーを押し、ページを開き直してください。

9.10 うまくいかないときは

症状 考えられる原因と対処
ラジオボタンで「男」と「女」の両方を選べてしまう 2つのラジオボタンの name が違います。どちらも name="gender" にしてください。
「男」「女」の文字をクリックしても選べない <label> で、ラジオボタンと文字の両方を囲んでいません。</label> の位置を確かめてください。
プルダウンを選んでも、送られる値が表示された文字にならない 正しい動きです。送られるのは <option> の value の値(番号)です。
自己紹介の欄に、最初から空白や空の行が入っている <textarea> と </textarea> の間に、空白や改行があります。続けて書いてください。
<textarea> から下の部品が、入力欄の中に文字として表示される </textarea> を書き忘れています。<textarea> は終了タグが必要です。

ほかのつまずきは、付録A「よくあるつまずきと対処法」も参考にしてください。

9.11 まとめと確認問題

まとめ

  • ラジオボタンは <input type="radio"> で作る。同じ name の中から1つだけを選べる。value が送られる値になる
  • <label> でラジオボタンやチェックボックスと文字を囲むと、文字をクリックしても選べる
  • 日付の入力欄は <input type="date">。送られる値は 2001-06-15 の形になる
  • プルダウンは <select name="…"> の中に <option value="…"> を並べて作る。表示される文字と、送られる value は別にできる
  • チェックボックスは <input type="checkbox">。いくつでも選べ、選んだ数だけ同じ名前の組が送られる
  • 複数行の入力欄は <textarea></textarea>。中では改行や空白がそのまま表示されるので、間を空けずに続けて書く
  • 最初から選んでおくには、checked(ラジオボタン・チェックボックス)と selected(プルダウン)を書く。テキストの入力欄は value に書く

この章で使ったタグと属性は、付録B「タグの早見表」・付録B「属性の早見表」にまとめています。

確認問題

問1 「はい」「いいえ」のどちらか1つを選ぶラジオボタンを、name を answer、値を yes・no にして、<label> を使って書いてください。

解答を見る

<label><input type="radio" name="answer" value="yes"> はい</label>
<label><input type="radio" name="answer" value="no"> いいえ</label>

問2 部署のプルダウンで「営業部」を選んで GET で送ると、URL には何が付きますか。<select name="deptId"> と <option value="2">営業部</option> を使っているものとします。

解答を見る

deptId=2 が付きます。表示されている「営業部」ではなく、value の値が送られます。

問3 ラジオボタンとチェックボックスの違いを説明してください。

解答を見る

ラジオボタンは、同じ name の中から1つだけを選べます。チェックボックスは、いくつでも選べ、1つも選ばなくてもかまいません。

問4 次の HTML で、入力欄にはどのように表示されますか。
<textarea name="comment">よろしく  お願いします</textarea>(「 」は、半角スペース2つを表します)

解答を見る

「よろしく お願いします」のように、間に空白が2つ入ったまま表示されます。<textarea> の中では、ソースの空白や改行がまとめられず、そのまま表示されるためです。<p> の中に書いた場合は、空白は1つにまとめられます。

問5 変更の画面で、部署のプルダウンの「開発部」を最初から選んだ状態にするには、どう書きますか。

解答を見る

「開発部」の <option> に selected を書き、<option value="3" selected>開発部</option> とします。


前へ

第8章 フォーム① 送信のしくみ

次へ

第10章 社員管理アプリの画面を作る

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?