返回任務地圖

先做一張能填寫的詢問表

第 15 堂 · 第 1/3 關 · 觀念 18 分鐘+實作 42 分鐘

查看本堂完整六步
先接任務,準備開始

先做一張能填寫的詢問表,每一步都有依據。

name是程式傳遞欄位的識別,label是讓人讀懂要填什麼。必填不只是畫星號,還要檢查純空白、Email與服務。

這關帶走:五欄有配對label與正確型別,純空白也被拒絕。

步驟 1/6 · 觀念 18 分鐘

先學一招:欄位名稱與畫面label各有用途

五欄有配對label與正確型別,純空白也被拒絕。

帶上你的裝備

  • 自己的service-site/frontend既有inquiry.html與完整styles.css;本關起始版尚無inquiry.js
  • 使用虛構聯絡資料;portfolio作品一保留,兩個專案不互相引用
  • 五欄與brand/web/landing服務清單

name是程式傳遞欄位的識別,label是讓人讀懂要填什麼。必填不只是畫星號,還要檢查純空白、Email與服務。

一起拆解:姓名文字與程式欄位

本關18分鐘觀念:3分鐘看輸入、6分鐘逐步推演、5分鐘正常與錯誤對照、4分鐘先預測再說明。

這次的輸入

畫面要顯示「聯絡人姓名」,程式仍用name欄位傳資料。

<label for="name">聯絡人姓名</label>
<input id="name" name="name" type="text">

這段是觀念縮圖,完整可操作檔案在本關參考成果;請依當前階段判讀,不把片段直接貼到任意位置。

一步一步推演

  1. 先看for對到input的id,name則是程式識別。
  2. 輸入三個空白,trim後是空字串,仍需提示必填;Email與服務另檢查。
  3. 有效資料只顯示檢查完成尚未送出,不造案件編號。

正常應看到

點label能聚焦姓名,改中文標籤不影響欄位識別。

常見錯誤對照

只畫必填星號而不檢查空白,不能阻止無內容輸入。

先預測,再說明原因

把label中文改掉時,為何不需要把name也改成中文?

跟著觀察

  1. 先讀「姓名文字與程式欄位」的輸入,指出本關實際檔案或資料。
  2. 把label中文改掉時,為何不需要把name也改成中文?
  3. 依例子逐步說明正常結果與錯誤差別,再記下自己的預測;參考結果不是已完成的實測。
label的for應對哪裡?

選一個試試看,答錯也可以再試。

這是你的實際操作確認,小測不會替你勾選。

步驟 2/6 · 實作 42 分鐘

動手挑戰:先做一張能填寫的詢問表

五欄有配對label與正確型別,純空白也被拒絕。

先準備

  • 自己的service-site/frontend既有inquiry.html與完整styles.css;本關起始版尚無inquiry.js
  • 使用虛構聯絡資料;portfolio作品一保留,兩個專案不互相引用
  • 五欄與brand/web/landing服務清單

親手把姓名label寫成聯絡人姓名,保留for與id。

照這個順序開始

  1. 複製獨立service-site,不改portfolio。
  2. 請AI建立五欄與trim/Email/服務驗證,錯誤保留值。
  3. 親手改label,用空白、abc及有效資料走一次。

建立五欄詢問與錯誤提示

主要使用 Cursor 內建 AI;先附資料,再送出指令。

1.附上這些檔案與資料
  • 自己的service-site/frontend既有inquiry.html與完整styles.css;本關起始版尚無inquiry.js
  • 使用虛構聯絡資料;portfolio作品一保留,兩個專案不互相引用
  • 五欄與brand/web/landing服務清單

本關才新增,不用先附檔:service-site/frontend/inquiry.js。請讓 AI 建立在指定位置;收到程式碼時核對檔名後自行儲存。

2.貼到哪裡
  1. 在 Cursor 開啟自己的本關練習副本,進入內建 AI 對話;正常版與故障副本分開。
  2. 只用 @ 附上上方已存在的指定檔案;「本關才新增」的檔案不需要先找或先建空檔,再貼下方Prompt。
  3. 先讀回覆與差異,只保存指定範圍;回到瀏覽器實際檢查。版本保存由自己操作,不讓 AI 代替驗收或提交。
3.預期回覆與操作
  • 請AI建立五欄與trim/Email/服務驗證,錯誤保留值。
  • 錯誤聚焦且保留所有已填值,有效仍明示尚未送出。
4.自己檢查結果
  • 五欄有配對label與正確型別,純空白也被拒絕。
  • 錯誤聚焦且保留所有已填值,有效仍明示尚未送出。
建立五欄詢問與錯誤提示 Prompt(可收合)

你是協助零基礎學員的網站開發助手。我使用 Cursor 免費版編輯原生 HTML、CSS、JavaScript;必要時把你提供的內容手動貼入檔案。

情境與本次輸入:作品一portfolio保留;另建自己的service-site/frontend,從提供的起始版使用本機APPA與同一紫綠tokens,不跨目錄引用。建立inquiry.html、inquiry.js、styles.css。五欄name姓名、email、serviceId、subject主旨、message需求都必填;服務先用brand品牌設計、web網站設計、landing活動頁設計。這堂無後端、沒有送出或寄信。

本次任務:起始版已存在的檔案才需附上;本關新增service-site/frontend/inquiry.js,不要要求先附不存在的檔案。依提供起始service-site/frontend建立inquiry.html、inquiry.js與必要CSS。五欄name姓名、email Email、serviceId服務、subject主旨、message需求全部必填,服務空預設及brand/web/landing。label對id、欄位旁錯誤與aria-describedby,表單novalidate後自己以trim、簡單Email格式及有效選項檢查;錯誤聚焦第一欄,其他值保留。沿用本機APPA與紫綠色票、鍵盤焦點、320px單欄,不加框架、後端、寄信或假成功。有效只寫「資料檢查完成,尚未送出。」我會親手把姓名label改聯絡人姓名,不改欄位識別。這關先不加500上限或草稿。

請先閱讀我附上的相關檔案或資料,資訊缺漏時精確列出需要補充的項目,不猜檔名、API 或測試結果。說明以繁體中文撰寫,指出檔案與修改位置;檢查結果區分已知、待驗與未完成。只處理學生自己的練習副本,不改現有展示網站,不要求付費訂閱。
Cursor AI 無法使用?改用 ChatGPT 備援

把上方指定的檔案內容、清單與補充資料,連同同一份 Prompt 貼入 ChatGPT 對話。只貼電腦上的路徑,無法讓它讀取你的檔案。

收到程式碼時,先核對檔名與修改位置,再手動存回自己的練習副本;若收到檢查表或補檔步驟,就逐項操作。不要把 Prompt 或程式碼框的反引號貼進 HTML/CSS。

兩邊都受限時,可先看既有參考成果、檢查差異與手動修改;未做過的 AI 生成或公開發布仍記待完成。不要貼入帳密、金鑰或真實個資。

複製只取得 Prompt 文字,檔案需自行在 Cursor 附上;本頁不會呼叫 AI 或自動完成關卡。

卡住時,APPA 給你一點線索

線索 1|先找現象與證據

先確認service預設值是空,不能開頁就算已選。

線索 2|再縮小修改範圍

不要在錯誤分支reset;有錯不代表其他資料要清空。

回到自己的作品,逐項檢查

  • 五欄有配對label與正確型別,純空白也被拒絕。
  • 錯誤聚焦且保留所有已填值,有效仍明示尚未送出。
  • 未實際完成的AI、發布或裝置驗收記待完成。
需要對照?看這一關的參考成果

先檢查自己的作品,再對照差異。開啟參考不會算完成。

對照五欄詢問表單(另開分頁)

尚未完成可以先往下看,之後再回來補做。

保留依據與結果,再帶著作品往下走。

保留自己的修改差異與檢查結果。完成兩項操作確認再往下一關;也可以先閱讀,稍後補做。

關卡紀錄由你自行確認;本頁不會讀取 Cursor 檔案或自動驗收作品。

留下自己的檢查紀錄

這是第 15 堂共用筆記,換關卡仍會保留。未實際做過的操作寫「待完成」。

重設會清除第 15 堂六步勾選,筆記、另一堂進度與網站檔案保留。