Skip to main content

radio 與下拉選單

Radio​

同一組 radio 用相同的 name 綁在一起,同一時間只能選一個。label 的 for 對到 input 的 id 之後,點文字就會選到那個 radio,焦點也會移過去。點擊範圍從一個小圓點變成整段文字,螢幕閱讀器也知道這段文字在描述哪個控制項。

fieldset 把整組包起來,legend 是這組的標題。

<form>
<fieldset>
<legend>Select a maintenance drone:</legend>

<div>
<input type="radio" id="huey" name="drone" value="huey" checked />
<label for="huey">Huey</label>
</div>

<div>
<input type="radio" id="dewey" name="drone" value="dewey" />
<label for="dewey">Dewey</label>
</div>

<div>
<input type="radio" id="louie" name="drone" value="louie" />
<label for="louie">Louie</label>
</div>
</fieldset>

<button type="submit">送出</button>
</form>
屬性作用
id這個控制項自己的識別,給 label for 對應
for指向要關聯的 id。點 label 等於點那個 input
name同一組 radio 必須相同。送出時欄位名稱也是它
value這個選項被選中時,表單送出的值
checked預設先選這一項。一組裡通常只標一個
fieldset / legend把選項包成一組,並提供組名

送出後,瀏覽器帶的是 drone=huey 這種 name=value。沒被選到的選項不會送出。

把 input 包在 label 裡面時,可以省略 for 和 id,點文字一樣會選到:

<label>
<input type="radio" name="drone" value="huey" checked />
Huey
</label>

id 在同一頁必須唯一。如果這組選項會重複出現(例如列表裡每一列都有一組 radio),id 要各自不同,name 也要依「這一組」分開,避免不同列互相搶選項。

下拉選單​

<select> 是原生下拉選單,關聯方式和 radio 一樣:label for 對到 select id。點標籤會把焦點移到選單,鍵盤使用者接著可以用方向鍵或空白鍵展開。

<form>
<label for="drone">Maintenance drone</label>
<select id="drone" name="drone" required>
<option value="">請選擇</option>
<option value="huey">Huey</option>
<option value="dewey" selected>Dewey</option>
<option value="louie">Louie</option>
</select>

<button type="submit">送出</button>
</form>
屬性作用
id / for和 radio 相同,點 label 會聚焦這個 select
name送出時的欄位名稱
option value實際送出的值。畫面上顯示的是標籤文字
selected預設選中的項目,相當於 radio 的 checked
required第一個空值選項當提示時,沒選就不能送出
disabled加在某個 option 上,該項不能選

選項很多時,用 optgroup 分組。label 是組名,不會被送出:

<label for="city">城市</label>
<select id="city" name="city">
<option value="">請選擇</option>
<optgroup label="北部">
<option value="tpe">台北</option>
<option value="ntp">新北</option>
</optgroup>
<optgroup label="中部">
<option value="txg">台中</option>
</optgroup>
</select>

要一次選多個,加上 multiple。按住 Ctrl(macOS 為 Command)可以加選,送出時同一個 name 會帶多個值:

<label for="drones">Drones</label>
<select id="drones" name="drones" multiple size="3">
<option value="huey">Huey</option>
<option value="dewey">Dewey</option>
<option value="louie">Louie</option>
</select>

size 決定一次露出幾列。有 multiple 或 size 大於 1 時,控制項會變成列表,不再是點一下才展開的下拉。