LESSON-12 · SELF-PACED PRACTICE

表單狀態與鍵盤操作

把「表單狀態與鍵盤操作」拆成 4 個可獨立完成、可重設、可驗證的自主學習 module。

4個獨立主題3個練習階段1個整合挑戰
看見缺口 → 修改一小段 → 重新載入驗收

每一個 topic 都有自己的檔案、Starter、Checkpoint、Solution 與證據清單。

先知道今天要做什麼

不要從長篇名詞開始;先從第一個可完成的小任務開始。

01

選一個 topic

從第一張卡開始,先閱讀任務情境與預期畫面。

02

修改自己的檔案

打開 Starter 的實作檔,依 Step 逐步修改,不靠按鈕代做。

03

用證據驗收

重新整理頁面,對照畫面、DOM、Computed、Console 或文件證據。

4 個獨立主題

每張卡只練一個責任;完成後再進入下一張。

01

:focus-within

能在欄位群組內任一控制項聚焦時,以 :focus-within 清楚標示整組 label、提示與 input。

要修改:files/starter/style.css

02

:invalid 與 :user-invalid

能區分控制項目前無效的 :invalid 與經使用者互動後才適合顯示錯誤的 :user-invalid。

要修改:files/starter/main.js

03

aria-invalid 與 aria-describedby

能在驗證失敗時同步 aria-invalid,並以 aria-describedby 指向真實存在的提示/錯誤 ids。

要修改:files/starter/index.html

04

disabled 與 aria-disabled

能分辨原生 disabled 會退出焦點/操作與表單提交,aria-disabled 則仍需程式阻止動作並可保留可發現性。

要修改:files/starter/index.html

最後整合挑戰

把已完成的責任轉回本章完整作品,不把整合步驟冒充成單項教學。

在同一份章節作品中整合 4 個 module,排除單項通過但組合失敗的問題。

完成能以鍵盤操作、錯誤可被描述且狀態語意一致的表單。

第一個建議動作

如果你現在只想知道下一步,先做這件事。

開啟「:focus-within」:先看 files/starter/style.css 的 先確認 input 可 Tab 到且沒有 tabindex=-1。,記錄目前狀態,再修改一小段。