跳至內容
Astera Technology

欄位有文字,不代表標籤已連好

按一下欄位標籤,核對焦點是否到正確輸入框;有文字在旁,不代表已建立關聯。

按可見標籤,焦點會到與它明確相連的欄位。

下載完整個案資料及參考答案 ↓

先看這個例子

「顯示名稱」是欄位標籤。下面另有一項說明,暫未用屬性連成程式可讀的描述,方便分清「標籤有關聯」和「文字剛好在旁邊」。

輸入與瀏覽器原生結果
情況輸入或查看方法結果與意思
明確關聯比較 label 的 for 和 input 的 id兩者都是 display-name;input.labels 有一個標籤
按標籤按「顯示名稱」焦點到 display-name 輸入框
附近說明查看 aria-describedby屬性未設;說明尚未成為相關描述
下載可編輯 CSV ↓

瀏覽器怎樣處理

for 會對應同一棵樹內、有相同 id 的可標籤控制項。這個關聯同時提供按標籤到欄位的原生路徑。placeholder 不能取代持續可見的標籤。若要連上說明,在 input 加 aria-describedby="hint",原有標籤關聯毋須改動。

for 寫錯,旁邊有標籤也連不上

反例的標籤寫 display-name,input 的 id 卻是 display-name-other,因此沒有找到對應控制項。

反例原始碼,請另開例子核對
<label for="display-name">顯示名稱</label><input id="display-name-other" type="text">

input.labels 長度為零,按標籤不會令該 input 取得焦點。正例有一個標籤,焦點亦到指定欄位。

試着修正

把 input 的 id 改成 note-name,另一個哪項屬性也要改?說明的關聯怎樣保留?

查看參考答案

label 的 for 也改成 note-name。若加了說明關聯,aria-describedby="hint" 照留;它指向說明的 id,不是 input 的 id。

  • 核對 input.labels,以及按標籤後真正的 activeElement。
  • 輸入框的名稱與相關描述分開核對。

原始例子檔案

相關資源