使用者填表單時,難免漏填、打錯格式。與其送出後才由伺服器通知,不如先在瀏覽器檢查,立刻告訴使用者哪裡要修正。本篇先用 HTML5 內建的驗證,再用 JavaScript 補上客製的規則,並學會用 FormData 一次取得所有欄位。
一、HTML5 內建驗證:不寫程式也能檢查
| 屬性 | 作用 |
required | 必填 |
type="email" | 必須是電子郵件格式 |
minlength/maxlength | 文字最少/最多幾個字 |
min/max | 數字或日期的範圍 |
pattern="正規表示式" | 符合指定格式 |
<form>
<input name="nick" required minlength="2" maxlength="10">
<input name="mail" type="email" required>
<input name="age" type="number" min="18" max="99">
<button>送出</button>
</form>
欄位不合格時,瀏覽器會擋下送出動作並顯示提示,提示文字由瀏覽器決定,會隨使用者的語言而不同。
二、用 JavaScript 讀取驗證結果
每個欄位都有 validity 物件,記錄各種檢查結果:
const mail = document.querySelector('[name="mail"]');
mail.addEventListener('input', () => {
console.log(mail.validity.valueMissing); // 是否漏填
console.log(mail.validity.typeMismatch); // 格式是否不符
console.log(mail.checkValidity()); // 整體是否合格(true/false)
});
整個表單也可以呼叫 form.checkValidity(),或用 form.reportValidity() 讓瀏覽器顯示提示。