Mỗi type đổi cả bàn phím trên mobile, UI của control và validation mặc định.
html
<input type="email"> <!-- bàn phím có @, tự validate định dạng -->
<input type="tel"> <!-- bàn phím số, KHÔNG validate -->
<input type="number" min="1" max="10" step="1">
<input type="date"> <!-- date picker của hệ điều hành -->
<input type="range" min="0" max="100">
<input type="color">
<input type="file" accept="image/*" multiple>
<input type="search"> <!-- có nút xoá, bàn phím hiện "Tìm" -->Ba nhóm:
- Chữ & số: text, password, email, number, tel, url, search.
- Ngày giờ: date, time, datetime-local, month, week.
- Tương tác & media: color, range, file, checkbox, radio, hidden, submit, reset, button.
Lưu ý: đừng dùng type="number" cho số điện thoại. Nó cắt số 0 đứng đầu, hiện nút tăng/giảm vô nghĩa, và cuộn chuột trên field làm đổi giá trị. Số điện thoại dùng type="tel" kèm pattern.
Chốt: type không thay được validation phía server — mọi ràng buộc HTML đều bỏ qua được bằng DevTools.