Try submit empty or invalid email.
1. Native constraints
Browser shows bubbles on submit.
<input type="email" required>
<input pattern="[A-Za-z]{3,}" title="At least 3 letters">2. :user-invalid styling
Highlight fields after blur/submit.
Invalid when empty after touch.
input:user-invalid {
border-color: #dc2626;
outline-color: #dc2626;
}3. setCustomValidity
Override message for one field.
Only OK clears error.
input.setCustomValidity('Choose another username');
input.reportValidity();Frequently asked questions
- HTML validation enough?
- Always re-validate on server. Client checks are for UX only.
- Disable native bubbles?
- Use novalidate on form and build custom UI, which is more work.
- pattern vs type=email?
- type=email has built-in rules; pattern is for custom regex.