iT邦幫忙

2025 iThome 鐵人賽

DAY 16
0
Modern Web

程式煉金術:Bug退散!前端驅魔記系列 第 16

Day 16 - 表單進一步互動的魔法

  • 分享至 

  • xImage
  •  

學習目標

  • 學會使用 <datalist> 提供輸入建議
  • 理解 <progress><meter> 的用途與差異
  • 認識 <output> 元素,能顯示即時計算結果
  • 嘗試結合 JavaScript 讓表單更有互動性

重點觀念(讓表單會「回應」)

  • datalist:輸入框的選單提示,不是固定選項,而是建議值。
  • progress:顯示進度(例如檔案上傳),範圍 0–100。
  • meter:顯示某數值在範圍內的比例(例如評分、剩餘電量)。
  • output:用來展示運算或表單互動結果,搭配 JS 更有用。

表單互動示範

<body>
  <h1>表單進一步互動</h1>

  <label for="browser">常用瀏覽器:</label>
  <input list="browsers" id="browser" name="browser">
  <datalist id="browsers">
    <option value="Chrome">
    <option value="Firefox">
    <option value="Safari">
    <option value="Edge">
  </datalist>
  <br><br>

  <label>檔案上傳進度:</label>
  <progress value="70" max="100"></progress>
  <br><br>

  <label>電池電量:</label>
  <meter value="0.6" min="0" max="1">60%</meter>
  <br><br>

  <form oninput="result.value=parseInt(a.value)+parseInt(b.value)">
    <input type="number" id="a" value="10"> +
    <input type="number" id="b" value="20"> =
    <output name="result">30</output>
  </form>
</body>

image

image

常見錯誤與修正

  • ❌ 把 <datalist> 當成下拉選單 → ✅ 它只是「建議」,使用者仍可輸入其他值
  • ❌ 混淆 <progress><meter> → ✅ 前者是進度,後者是範圍內的比例
  • ❌ 忘記 <output> 需要搭配計算 → ✅ 與 JS 或 oninput 搭配才能動態顯示
  • ❌ 忽略無障礙需求 → ✅ 為 <progress><meter> 加上適當標籤

今日小挑戰(可交付)

  • [ ] 建立一個 <datalist>,提供至少 3 個建議值
  • [ ] 新增一個 <progress>,模擬讀取 50%
  • [ ] 做一個 <meter>,顯示 1~10 的評分在 7 的位置
  • [ ] 用 <output> 做簡單加法運算
  • [ ] 測試當輸入數字變動時,結果能即時更新

DAY16 心得

今天的學習讓我覺得表單不再只是「填空題」,而是能和使用者互動的工具。像 <datalist> 能提供建議,但仍保留彈性;而 <progress><meter> 則能即時呈現狀態,讓資訊更直觀。

我最喜歡 <output> 的部分,因為它能搭配簡單的 JS,直接在表單中顯示計算結果,這讓表單更像是「活的介面」。雖然還很基礎,但已經能感受到 HTML 與 JavaScript 結合的威力。

整體來說,這些元素雖然不是每天都會用,但在特定情境下能大大提升體驗。就像健身中有些輔助動作不是核心,但在需要的時候能補足效果。


上一篇
Day 15 - 表單進階屬性的魔法
下一篇
Day 17 - 表格進階與合併的魔法
系列文
程式煉金術:Bug退散!前端驅魔記18
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言