最後整合任務
交付:完成具原生驗證、單一送出、timeout 與可恢復錯誤狀態的表單。
將同一組責任轉用到另一個商家情境,仍達成:完成具原生驗證、單一送出、timeout 與可恢復錯誤狀態的表單。
限制:不新增框架。;保留 module id 與驗收證據。
INTEGRATED LAB · Starter
在同一份章節作品中整合 4 個 module,排除單項通過但組合失敗的問題。
交付:完成具原生驗證、單一送出、timeout 與可恢復錯誤狀態的表單。
將同一組責任轉用到另一個商家情境,仍達成:完成具原生驗證、單一送出、timeout 與可恢復錯誤狀態的表單。
限制:不新增框架。;保留 module id 與驗收證據。
整合不是重新背一遍名詞;是把每個 topic 的責任放回同一份作品。
files/starter/contact.html|entryCount=2、keys 含 name/newsletter、missingNameIncluded=false、disabledIncluded=falsefiles/starter/main.js|validBefore=false、reported=false、invalidCountBefore=1、validAfter=truefiles/starter/main.js|attempts=2、sendCount=1、disabledDuring=true、restored=truefiles/starter/main.js|aborted=true、category=timeout、finalState=idle、buttonRestored=true每個停點都要留下檔案、畫面或瀏覽器證據。
檔案:files/starter/index.html 定位:#observe
操作:逐項讀取 outcomes,執行一次現況操作。
// OBSERVE:不修改程式,先記錄第一個失敗 moduleId。預期:能指出第一個未通過 module。
證據:第一個 moduleId 與缺少的 evidence。
卡住先查:確認開啟的是 files/starter/index.html。
檔案:files/starter/index.html 定位:#modify
操作:從混合欄位表單建立 FormData,列出 entries 並核對缺 name 與 disabled 欄位未被收錄。 → 對空 required email 執行兩種驗證,再填入有效 email 重驗並比較 :invalid 數量。 → 在同一個未完成 Promise 期間呼叫 handler 兩次,驗證第二次被 guard 擋下且 finally 恢復按鈕。 → 讓本機模擬工作超過 timeout,確認 signal 中止、catch 分類 timeout,並由 finally 恢復 idle/按鈕。
// 18-01-formdata-successful-controls: 從混合欄位表單建立 FormData,列出 entries 並核對缺 name 與 disabled 欄位未被收錄。
// 18-02-checkvalidity-reportvalidity: 對空 required email 執行兩種驗證,再填入有效 email 重驗並比較 :invalid 數量。
// 18-03-topic: 在同一個未完成 Promise 期間呼叫 handler 兩次,驗證第二次被 guard 擋下且 finally 恢復按鈕。
// 18-04-abortcontroller-timeout: 讓本機模擬工作超過 timeout,確認 signal 中止、catch 分類 timeout,並由 finally 恢復 idle/按鈕。預期:完成具原生驗證、單一送出、timeout 與可恢復錯誤狀態的表單。
證據:entryCount=2、keys 含 name/newsletter、missingNameIncluded=false、disabledIncluded=false;validBefore=false、reported=false、invalidCountBefore=1、validAfter=true;attempts=2、sendCount=1、disabledDuring=true、restored=true;aborted=true、category=timeout、finalState=idle、buttonRestored=true
卡住先查:回到第一個未通過的 module,只修該處。
檔案:files/solution/index.html 定位:#verify
操作:重新整理並依 outcomes 順序重跑所有證據。
// VERIFY:逐項記錄 pass/fail,不以看到畫面代替 evidence。預期:4/4 module 通過。
證據:每個 moduleId 都有實際結果與重設後重現紀錄。
卡住先查:若失敗,回到第一個失敗 module,不同時修多項。
檔案:files/starter/index.html 定位:#challenge
操作:替另一個商家情境重做,仍達成:完成具原生驗證、單一送出、timeout 與可恢復錯誤狀態的表單。
// CHALLENGE:只替換內容與資料,不新增框架或跳過 self-check。預期:完成具原生驗證、單一送出、timeout 與可恢復錯誤狀態的表單。
證據:轉用後的作品與全數 module self-check。
卡住先查:先確認共同基底與 module id 未被改壞。
完成本階段後,重新載入並保存整合證據。
回到自主學習入口