第 15 堂|把詢問需求整理成五個欄位
建立獨立的第二個網站,先驗證五欄資料,再顯示尚未送出。
欄位名稱與畫面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">這段是觀念縮圖,完整可操作檔案在本關參考成果;請依當前階段判讀,不把片段直接貼到任意位置。
一步一步推演
- 先看for對到input的id,name則是程式識別。
- 輸入三個空白,trim後是空字串,仍需提示必填;Email與服務另檢查。
- 有效資料只顯示檢查完成尚未送出,不造案件編號。
正常應看到
點label能聚焦姓名,改中文標籤不影響欄位識別。
常見錯誤對照
只畫必填星號而不檢查空白,不能阻止無內容輸入。
先預測,再說明原因
把label中文改掉時,為何不需要把name也改成中文?
跟著觀察
- 先讀「姓名文字與程式欄位」的輸入,指出本關實際檔案或資料。
- 把label中文改掉時,為何不需要把name也改成中文?
- 依例子逐步說明正常結果與錯誤差別,再記下自己的預測;參考結果不是已完成的實測。
做完,自己確認
- 五欄有配對label與正確型別,純空白也被拒絕。
- 能指出指定檔案與作用範圍。
先做一張能填寫的詢問表
五欄有配對label與正確型別,純空白也被拒絕。
先準備
- 自己的service-site/frontend既有inquiry.html與完整styles.css;本關起始版尚無inquiry.js
- 使用虛構聯絡資料;portfolio作品一保留,兩個專案不互相引用
- 五欄與brand/web/landing服務清單
親手把姓名label寫成聯絡人姓名,保留for與id。
跟著做
- 複製獨立service-site,不改portfolio。
- 請AI建立五欄與trim/Email/服務驗證,錯誤保留值。
- 親手改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.貼到哪裡
- 在 Cursor 開啟自己的本關練習副本,進入內建 AI 對話;正常版與故障副本分開。
- 只用 @ 附上上方已存在的指定檔案;「本關才新增」的檔案不需要先找或先建空檔,再貼下方Prompt。
- 先讀回覆與差異,只保存指定範圍;回到瀏覽器實際檢查。版本保存由自己操作,不讓 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 或自動完成關卡。
字數提示與資料限制要一致
message字數提示與本練習length規則一致。
先準備
- 自己service-site/frontend的inquiry.html、inquiry.js與完整styles.css
- 使用虛構聯絡資料;portfolio作品一保留,兩個專案不互相引用
- 正常五欄程式與需求長度測試值
即時提示告訴人目前填了多少;檢查仍要在驗證時核對,不只讓畫面顯示一個數字。
一起拆解:字數怎麼算,怎麼限制
本關18分鐘觀念:3分鐘看輸入、6分鐘逐步推演、5分鐘正常與錯誤對照、4分鐘先預測再說明。
這次的輸入
本練習用JS字串length;需求欄上限500,不宣稱完整字素計數。
"你好".length // 2
"😀".length // 2,這是UTF-16長度
<textarea maxlength="500"></textarea>這段是觀念縮圖,完整可操作檔案在本關參考成果;請依當前階段判讀,不把片段直接貼到任意位置。
一步一步推演
- 先讀提示與目前字數,再以中文及表情符號比較length。
- 即時計數與提交檢查都用同規則;trim後必填仍保留。
- 測空白、499、500;若以受控方式得到超長值,提交仍應拒絕,不截斷假通過。
正常應看到
使用者看到目前長度及500上限;原Email等驗證仍在。
常見錯誤對照
畫面顯示500上限但提交不檢查,無法證明資料限制完整。
先預測,再說明原因
為何一個表情符號可能顯示2?本練習要如何向使用者說清楚?
跟著觀察
- 先讀「字數怎麼算,怎麼限制」的輸入,指出本關實際檔案或資料。
- 為何一個表情符號可能顯示2?本練習要如何向使用者說清楚?
- 依例子逐步說明正常結果與錯誤差別,再記下自己的預測;參考結果不是已完成的實測。
做完,自己確認
- message字數提示與本練習length規則一致。
- 能指出指定檔案與作用範圍。
把需求長度說清楚
message字數提示與本練習length規則一致。
先準備
- 自己service-site/frontend的inquiry.html、inquiry.js與完整styles.css
- 使用虛構聯絡資料;portfolio作品一保留,兩個專案不互相引用
- 正常五欄程式與需求長度測試值
親手輸入中文需求,比較計數與500上限。
跟著做
- 保留正常五欄與原驗證,先記目前計數需求。
- 只請AI加message的500上限、計數及驗證。
- 測空白、499、500字與錯誤修正,其他欄位保留。
只加需求字數與上限
主要使用 Cursor 內建 AI;先附資料,再送出指令。
- 1.附上這些檔案與資料
- 自己service-site/frontend的inquiry.html、inquiry.js與完整styles.css
- 使用虛構聯絡資料;portfolio作品一保留,兩個專案不互相引用
- 正常五欄程式與需求長度測試值
- 2.貼到哪裡
- 在 Cursor 開啟自己的本關練習副本,進入內建 AI 對話;正常版與故障副本分開。
- 用 @ 附上本關指定檔案,核對完整路徑;補實際觀察、輸入與結果,再貼下方 Prompt。
- 先讀回覆與差異,只保存指定範圍;回到瀏覽器實際檢查。版本保存由自己操作,不讓 AI 代替驗收或提交。
- 3.預期回覆與操作
- 只請AI加message的500上限、計數及驗證。
- 500上限明確,原驗證與已填值不受影響。
- 4.自己檢查結果
- message字數提示與本練習length規則一致。
- 500上限明確,原驗證與已填值不受影響。
只加需求字數與上限 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活動頁設計。這堂無後端、沒有送出或寄信。
本次任務:只替message需求欄加入maxlength=500、即時目前長度/500提示及提交時長度檢查。沿用JavaScript字串length計數,請明示這是本練習的計數規則,不宣稱完整Unicode字素計數。保留trim必填、Email、服務、欄位值與焦點,其他四欄與APPA不改。不加草稿或真正送出,給空白/499/500及錯誤修正的驗收。
請先閱讀我附上的相關檔案或資料,資訊缺漏時精確列出需要補充的項目,不猜檔名、API 或測試結果。說明以繁體中文撰寫,指出檔案與修改位置;檢查結果區分已知、待驗與未完成。只處理學生自己的練習副本,不改現有展示網站,不要求付費訂閱。Cursor AI 無法使用?改用 ChatGPT 備援
把上方指定的檔案內容、清單與補充資料,連同同一份 Prompt 貼入 ChatGPT 對話。只貼電腦上的路徑,無法讓它讀取你的檔案。
收到程式碼時,先核對檔名與修改位置,再手動存回自己的練習副本;若收到檢查表或補檔步驟,就逐項操作。不要把 Prompt 或程式碼框的反引號貼進 HTML/CSS。
兩邊都受限時,可先看既有參考成果、檢查差異與手動修改;未做過的 AI 生成或公開發布仍記待完成。不要貼入帳密、金鑰或真實個資。
複製只取得 Prompt 文字,檔案需自行在 Cursor 附上;本頁不會呼叫 AI 或自動完成關卡。
錯誤處理要保留使用者輸入
錯誤時全部已填值保留,焦點仍到第一個無效欄。
先準備
- 自己service-site/frontend的inquiry.html、inquiry.js與完整styles.css
- 使用虛構聯絡資料;portfolio作品一保留,兩個專案不互相引用
- fault-L15的inquiry.js與五欄輸入前後紀錄
故障副本在Email錯誤時reset整張表單。應只提示並聚焦,不能清空其他四欄。
一起拆解:錯誤時保留已填值
本關18分鐘觀念:3分鐘看輸入、6分鐘逐步推演、5分鐘正常與錯誤對照、4分鐘先預測再說明。
這次的輸入
姓名、服務、主旨、需求已填;Email輸入abc後按檢查。
if (firstInvalidField) {
firstInvalidField.focus();
// 顯示錯誤,不呼叫form.reset()
}這段是觀念縮圖,完整可操作檔案在本關參考成果;請依當前階段判讀,不把片段直接貼到任意位置。
一步一步推演
- 先記四個正確欄位內容,重現故障版整張被清空。
- 在無效分支定位多出的form.reset,只移除此敘述。
- 修正Email重試,確認四欄仍在且只顯示檢查完成。
正常應看到
錯誤提示聚焦Email,其他內容保留。
常見錯誤對照
把Email驗證刪掉雖能避開錯誤分支,卻沒有修復資料遺失原因。
先預測,再說明原因
修復後要先用有效Email,還是先重跑abc?為什麼?
跟著觀察
- 先讀「錯誤時保留已填值」的輸入,指出本關實際檔案或資料。
- 修復後要先用有效Email,還是先重跑abc?為什麼?
- 依例子逐步說明正常結果與錯誤差別,再記下自己的預測;參考結果不是已完成的實測。
做完,自己確認
- 錯誤時全部已填值保留,焦點仍到第一個無效欄。
- 能指出指定檔案與作用範圍。
錯一欄,不要重填全部
錯誤時全部已填值保留,焦點仍到第一個無效欄。
先準備
- 自己service-site/frontend的inquiry.html、inquiry.js與完整styles.css
- 使用虛構聯絡資料;portfolio作品一保留,兩個專案不互相引用
- fault-L15的inquiry.js與五欄輸入前後紀錄
親手先填四欄、Email用abc,記下錯誤前後值。
跟著做
- 獨立fault-L15重現按檢查後整張被清空。
- 請AI只移除錯誤分支的form.reset。
- 測空白、錯誤Email、修正後有效,以及手機鍵盤。
修復錯誤時清空表單
主要使用 Cursor 內建 AI;先附資料,再送出指令。
- 1.附上這些檔案與資料
- 自己service-site/frontend的inquiry.html、inquiry.js與完整styles.css
- 使用虛構聯絡資料;portfolio作品一保留,兩個專案不互相引用
- fault-L15的inquiry.js與五欄輸入前後紀錄
- 2.貼到哪裡
- 在 Cursor 開啟自己的本關練習副本,進入內建 AI 對話;正常版與故障副本分開。
- 用 @ 附上本關指定檔案,核對完整路徑;補實際觀察、輸入與結果,再貼下方 Prompt。
- 先讀回覆與差異,只保存指定範圍;回到瀏覽器實際檢查。版本保存由自己操作,不讓 AI 代替驗收或提交。
- 3.預期回覆與操作
- 請AI只移除錯誤分支的form.reset。
- 修正後顯示檢查完成尚未送出,沒有假案件。
- 4.自己檢查結果
- 錯誤時全部已填值保留,焦點仍到第一個無效欄。
- 修正後顯示檢查完成尚未送出,沒有假案件。
修復錯誤時清空表單 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活動頁設計。這堂無後端、沒有送出或寄信。
本次任務:無效Email時已填其他欄被清空。依附步驟與程式定位無效分支多出的form.reset(),只移除這一個故障敘述,保留錯誤訊息、第一無效欄焦點、trim、Email、服務與500上限。不重設資料、不新增假送出或後端,列四欄保留、修正Email再通過、手機鍵盤回歸,實際結果由我操作。
請先閱讀我附上的相關檔案或資料,資訊缺漏時精確列出需要補充的項目,不猜檔名、API 或測試結果。說明以繁體中文撰寫,指出檔案與修改位置;檢查結果區分已知、待驗與未完成。只處理學生自己的練習副本,不改現有展示網站,不要求付費訂閱。Cursor AI 無法使用?改用 ChatGPT 備援
把上方指定的檔案內容、清單與補充資料,連同同一份 Prompt 貼入 ChatGPT 對話。只貼電腦上的路徑,無法讓它讀取你的檔案。
收到程式碼時,先核對檔名與修改位置,再手動存回自己的練習副本;若收到檢查表或補檔步驟,就逐項操作。不要把 Prompt 或程式碼框的反引號貼進 HTML/CSS。
兩邊都受限時,可先看既有參考成果、檢查差異與手動修改;未做過的 AI 生成或公開發布仍記待完成。不要貼入帳密、金鑰或真實個資。
複製只取得 Prompt 文字,檔案需自行在 Cursor 附上;本頁不會呼叫 AI 或自動完成關卡。
留下自己的檢查紀錄
記下實際做過的操作、差異與結果。還沒做的項目寫「待完成」。
勾選與筆記只保存在這個瀏覽器。
重設只清除勾選,網站檔案與檢查筆記都保留。