Biểu mẫu thu thập thông tin từ người dùng. HTML hiện đại có sẵn nhiều kiểu nhập và kiểm tra dữ liệu mà không cần JavaScript.
Bạn sẽ học được
- Xây biểu mẫu với label, input, select, textarea
- Dùng các kiểu input: email, number, date, tel
- Kiểm tra bằng required, pattern, min, max
- Làm biểu mẫu dễ tiếp cận
Thuật ngữ cần biết
- Biểu mẫu (form)
- Vùng chứa các ô nhập và nút gửi.
- action, method
- Địa chỉ nhận dữ liệu và cách gửi (GET hoặc POST).
- Validation
- Kiểm tra dữ liệu hợp lệ trước khi gửi.
- label
- Nhãn gắn với ô nhập, bấm nhãn là chọn được ô.
Biểu mẫu đăng ký hoàn chỉnh
<form action="/dang-ky" method="post">
<label for="ten">Họ tên</label>
<input id="ten" name="ten" required>
<label for="email">Email</label>
<input id="email" name="email" type="email" required>
<label for="tuoi">Tuổi</label>
<input id="tuoi" name="tuoi" type="number" min="6" max="100">
<label for="lop">Lớp</label>
<select id="lop" name="lop">
<option>K65</option><option>K66</option>
</select>
<label for="gt">Ghi chú</label>
<textarea id="gt" name="gt" rows="3"></textarea>
<label><input type="checkbox" name="dongy" required> Tôi đồng ý điều khoản</label>
<button type="submit">Đăng ký</button>
</form>Các kiểu input hay dùng
| type | Tác dụng |
|---|---|
| text, email, tel, url | Văn bản có kiểm tra định dạng, bàn phím phù hợp trên điện thoại |
| number, range | Số, thanh trượt |
| date, time | Chọn ngày giờ bằng lịch |
| password | Ẩn ký tự |
| file | Tải tệp lên |
| radio, checkbox | Chọn một / chọn nhiều |
| hidden | Gửi dữ liệu ẩn |
Kiểm tra dữ liệu
<input type="text" name="ma" pattern="[A-Z]{2}[0-9]{4}"
title="2 chữ hoa và 4 số, ví dụ SV2026" required>
<input type="password" minlength="8" required>Dùng CSS input:invalid và input:valid để đổi màu viền khi sai/đúng.
Tình huống: Biểu mẫu đăng ký lớp học
Trung tâm cần họ tên, email, số điện thoại, khóa học và đồng ý điều khoản. Dùng required, type="email", type="tel" giúp loại bỏ phần lớn dữ liệu sai từ phía người dùng.
Mẹo hay
Dùng autocomplete="email", "name", "tel" để trình duyệt tự điền, người dùng điền nhanh hơn.
Lưu ý
Kiểm tra phía trình duyệt chỉ để tiện cho người dùng. Máy chủ vẫn phải kiểm tra lại dữ liệu vì ai cũng có thể bỏ qua kiểm tra này.
Thực hành
- Làm biểu mẫu liên hệ gồm tên, email, chủ đề, nội dung.
- Thêm pattern cho số điện thoại Việt Nam 10 số bắt đầu bằng 0.
- Tô viền đỏ khi nhập sai bằng
:invalid.
Tóm tắt bài học
- Mỗi ô nhập cần label gắn bằng for/id.
- Chọn đúng
typeđể có kiểm tra và bàn phím thích hợp. - Kiểm tra ở trình duyệt chỉ là tiện ích, máy chủ vẫn phải kiểm tra.