Constraint Validation API là mặt JavaScript của validation có sẵn — cho phép đọc trạng thái và đặt thông báo lỗi riêng.
js
const form = document.querySelector('form')
const email = form.elements.email
email.addEventListener('input', () => {
if (email.validity.typeMismatch) {
email.setCustomValidity('Email chưa đúng định dạng, ví dụ: ban@congty.vn')
} else if (email.validity.valueMissing) {
email.setCustomValidity('Vui lòng nhập email')
} else {
email.setCustomValidity('') // chuỗi rỗng = hợp lệ
}
})
form.addEventListener('submit', (e) => {
if (!form.checkValidity()) { // kiểm tra, KHÔNG hiện bong bóng lỗi
e.preventDefault()
form.reportValidity() // kiểm tra VÀ hiện bong bóng + focus
}
})Các cờ trong validity: valueMissing, typeMismatch, patternMismatch, tooShort, tooLong, rangeUnderflow, rangeOverflow, stepMismatch, customError.
Lưu ý: quên gọi setCustomValidity('') khi giá trị đã hợp lệ — field kẹt ở trạng thái lỗi vĩnh viễn và form không bao giờ submit được. Đây là bug hay gặp nhất với API này.