This page gently walks you through how to use the HTML select element to build dropdowns and list-style select boxes, and how to choose between single-choice and multi-select lists when creating forms.
HTMLのselect要素(selectタグ)を使って、ドロップダウン式やスクロール式のセレクトボックスを作り、一つだけ選ぶ場合や複数選べるリストをどう使い分けるかを、フォーム初心者向けにゆっくり整理したページです。
select要素は、セレクトボックスを作成する際に使用します。一般的なブラウザでは、ドロップダウン式のセレクトボックスや、スクロール式のセレクトウィンドウとして表示されます。
<select>~</select> でセレクトボックス全体を定義して、その中に option要素を配置して個々の選択肢リストを作成します。option要素で作成した選択肢を <optgroup>~</optgroup> で囲むと、選択肢をグループ化することができます。
multiple属性は、選択肢を複数選択できるようにする際に使用します。multiple属性を指定しない場合には、選択肢を1つだけ選択できるようになります。
パソコンでは、Ctrlキー(macOSではCommandキー)を押しながらクリックすると複数選択できます。ただし、スマートフォンでは端末ごとに表示や操作方法が変わるため、複数選択を使うときは実際の画面も確認しておきましょう。
size属性は、ユーザーに向けて表示する選択肢の数を指定する際に使用します。size属性の値として指定できるのは、1以上の正の整数です。size属性を指定しない場合、multiple属性がないときは1つだけ見えるドロップダウン表示になり、multiple属性があるときは、何行分を表示するかはブラウザ側の判断に任されます(多くのブラウザでは4行前後がよく使われます)。
尚、選択肢をあらかじめ選択状態にするには、option要素にselected属性を指定します。
※メモ:select要素は必ずボックスとして表示されるわけではありません。従って“セレクトボックス”という表現は正確ではありませんが、分かりやすさを優先しています。正確に解説するなら、「select要素は、選択肢リストから選択するための操作機能を表す要素です。」となります。
select要素は、HTML4.01の頃からあるおなじみの要素ですが、HTML5以降では、新しくautofocus属性とform属性が使えるようになりました。既存の基本的な使い方はそのまま使えますが、「最初からフォーカスを当てたい」「離れた場所の<form>と結びつけたい」といった場面で便利になっています。
autofocus属性autofocus)disabled属性disabled)form属性<form>のid名で指定multiple属性multiple)name属性size属性HTML
<p>
<label for="language">言語を選択してください:</label>
<select id="language" name="language">
<option value="en">英語</option>
<option value="de">ドイツ語</option>
<option value="fr">フランス語</option>
<option value="ja" selected>日本語</option>
<option value="zh">中国語</option>
</select>
</p>
<p>
<label for="contact">ご希望の連絡方法(複数選択可):</label>
<select id="contact" name="contact" multiple size="5">
<option value="email" selected>電子メール</option>
<option value="tel" selected>電話</option>
<option value="fax" selected>ファックス</option>
<option value="postal" selected>郵便</option>
<option value="office">ご来店時に係員より説明</option>
</select>
</p>
size属性の値によって、1行だけのドロップダウンとして表示されたり、複数行見えるスクロール式のリストとして表示されたりします。どちらも中身は同じselect要素で、「見た目だけ」が違うイメージです。select要素にrequired属性を付けます。さらに、最初の選択肢を「選択してください」といった文言にして、value=""でdisabled属性とselected属性を付けておくと、送信前に必ず何かが選ばれるようにできます。multiple属性を付けると複数選択できますが、パソコンとスマートフォンで操作方法や見た目が変わります。フォームを公開する前に、実際に使われそうな環境(PC/スマホ)でテストしておくと安心です。option要素のvalue属性には何を書けば良いですか?value属性の値)は分けて考えます。プログラムで扱いやすい短い英数字をvalueにし、画面側には日本語の分かりやすいラベルを表示するのがおすすめです。select要素にname属性が付いていないと、その項目はフォーム送信されません。idだけでなく、name属性が付いているか確認しましょう。optionにはvalue=""を指定し、disabled属性とselected属性を付けておくと送信されにくくなります。必須項目にしたい場合は、select要素にrequired属性も付けましょう。nameの値が複数送られても1つ目しか拾わないことがあります。必要に応じて、nameを「contact[]」のように配列風にしたり、サーバー側の設定を見直したりしてください。size属性が指定されていない場合、何行分表示するかはブラウザによって変わることがあります。見た目を揃えたいときは、size属性に具体的な行数を指定しましょう。