☕ NEW! 完成新手任務即可參加抽獎!LINE 星巴克禮券等你拿,名額有限!        🎉 推廣活動:邀請好友註冊 DevLearn,累積推薦抽 LINE 星巴克禮券! 活動詳情 →        🔥 活動期間 2026/4/1 - 5/31 |已有 0 人參加       
html 初學

表單進階與驗證

datalist — 自動完成建議

<label for="browser">瀏覽器</label>
<input list="browsers" id="browser" name="browser">
<datalist id="browsers">          <!-- ← 和 input 的 list 對應 -->
    <option value="Chrome">
    <option value="Firefox">
    <option value="Safari">
    <option value="Edge">
</datalist>
<!-- 使用者輸入時會顯示建議清單 -->

output — 顯示計算結果

<form oninput="result.value = parseInt(a.value) + parseInt(b.value)">
    <input type="number" id="a" value="0"> +
    <input type="number" id="b" value="0"> =
    <output name="result" for="a b">0</output>
</form>

自訂驗證訊息

<form id="myForm">
    <input type="text" id="phone" name="phone"
           pattern="09\d{8}"
           title="請輸入 09 開頭的 10 位手機號碼"
           required>
    <button type="submit">送出</button>
</form>

<script>
    // JavaScript 自訂驗證
    let phone = document.getElementById("phone");
    phone.addEventListener("input", () => {
        if (phone.validity.patternMismatch) {
            phone.setCustomValidity("手機號碼格式不正確,請輸入 09 開頭的 10 位數字");
        } else {
            phone.setCustomValidity("");   // 清除錯誤訊息
        }
    });
</script>

無障礙表單

<!-- ✅ 用 label + for 關聯 -->
<label for="email">Email</label>
<input type="email" id="email" name="email"
       aria-describedby="email-help">
<small id="email-help">我們不會分享你的 Email</small>

<!-- ✅ 用 fieldset + legend 分組 -->
<fieldset>
    <legend>聯絡方式</legend>
    <label for="phone">電話</label>
    <input type="tel" id="phone">
    <label for="addr">地址</label>
    <input type="text" id="addr">
</fieldset>

<!-- ✅ 錯誤提示 -->
<input type="email" id="email"
       aria-invalid="true"
       aria-errormessage="email-error">
<span id="email-error" role="alert">
    請輸入有效的 Email 地址
</span>

表單安全注意事項

<!-- 1. 用 POST 傳送敏感資料(不要用 GET) -->
<form method="POST">              <!-- ✅ 資料在 body 裡 -->
<form method="GET">               <!-- ❌ 資料在 URL 上,會被看到 -->

<!-- 2. CSRF 防護 -->
<form method="POST">
    <input type="hidden" name="__RequestVerificationToken" value="...">
</form>

<!-- 3. autocomplete 控制 -->
<input type="password" autocomplete="new-password">  <!-- 新密碼 -->
<input type="password" autocomplete="current-password"> <!-- 現有密碼 -->
<input type="text" autocomplete="off">  <!-- 關閉自動填入 -->

💡 大家的想法 · 0

載入中...
💬 即時聊天室 🟢 0 人在線
😀 😎 🤓 💻 🎮 🎸 🔥
➕ 新問題
📋 我的工單
💬 LINE 社群
🔒
需要註冊才能使用此功能
註冊帳號即可解鎖測驗、遊戲、簽到、筆記下載等所有功能,完全免費!
免費註冊