iT邦幫忙

2025 iThome 鐵人賽

DAY 9
0

學習目標

  • 學會建立基本表單 <form>
  • 熟悉輸入元件 <input><textarea><button>
  • 使用常見屬性:typenamevalueplaceholderrequired
  • 理解 <label> 與可用性的關係
  • 嘗試建立一個小型「聯絡我們」表單

重點觀念(互動的開始)

  • 表單是使用者與網站互動的入口:收集資料、送出請求。
  • 輸入型態影響體驗type="email"type="password"type="number" 都有不同檢查與介面。
  • label 的重要性:點擊文字能觸發輸入框,對無障礙設計非常關鍵。
  • 表單不等於後端:前端建立表單結構,送出資料後需要伺服器處理。

表單示範

<body>
  <h1>聯絡我們</h1>
  <form action="/submit" method="post">
    <label for="name">姓名:</label>
    <input type="text" id="name" name="name" placeholder="請輸入姓名" required>
    <br><br>

    <label for="email">電子郵件:</label>
    <input type="email" id="email" name="email" placeholder="example@mail.com" required>
    <br><br>

    <label for="message">留言:</label><br>
    <textarea id="message" name="message" rows="5" cols="30" placeholder="請輸入訊息"></textarea>
    <br><br>

    <button type="submit">送出</button>
  </form>
</body>

image

常見錯誤與修正

  • ❌ 忘記加 label → ✅ 提升可用性與無障礙體驗
  • ❌ 全部使用 type="text" → ✅ 依需求使用 emailpasswordnumber
  • ❌ 忘記加 name → ✅ 後端需要 name 來接收資料
  • ❌ 靠 placeholder 當標籤 → ✅ 使用 <label>placeholder 僅作輔助

今日小挑戰(可交付)

  • [ ] 建立一個包含姓名、Email 的表單
  • [ ] 新增一個留言區 <textarea>
  • [ ] 為所有欄位加上 <label>
  • [ ] 使用 required 驗證必填
  • [ ] 嘗試新增一個 password 欄位並測試

DAY9 心得

今天進入到表單的部分,感覺像是前端世界的一個轉折點,因為它不再只是靜態顯示,而是開始與使用者互動。透過 <form> 和各種輸入欄位,我能收集資訊並傳送到後端,這讓網頁變得真正「活起來」。

練習的時候我特別注意 label 的用法,以前常常忽略,結果使用體驗很差,現在才知道它對無障礙設計的重要性。type 的選擇也讓我體會到,瀏覽器其實能幫忙做很多檢查,例如 email 格式或數字輸入。

雖然目前還沒接觸後端,但我能感覺到這一步是必要的基礎。就像打地基一樣,先把表單結構設計好,未來才能接 API 或資料庫。一步一步,網站真的開始有了靈魂。


上一篇
Day 8 - 清單與表格的魔法
系列文
程式煉金術:Bug退散!前端驅魔記9
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言