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.
- 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
- 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 ô.
Khái niệm và lý thuyết
Biểu mẫu là cầu nối giữa người dùng và máy chủ. Khi bấm gửi, trình duyệt gom mọi trường có thuộc tính name thành các cặp tên=giá trị và gửi tới địa chỉ action bằng phương thức method. GET đặt dữ liệu lên địa chỉ URL (hợp cho tìm kiếm), POST gửi trong thân yêu cầu (hợp cho đăng nhập, dữ liệu nhạy cảm, tệp).
Kiểm tra dữ liệu (validation) có hai tầng. Tầng trình duyệt dùng thuộc tính HTML (required, type, min, max, pattern) giúp người dùng sửa lỗi ngay. Tầng máy chủ mới là chốt chặn bảo mật vì tầng trình duyệt có thể bị bỏ qua.
Khả năng truy cập: mỗi ô nhập phải có label gắn qua for/id; nhờ đó trình đọc màn hình đọc được nhãn và bấm vào nhãn sẽ chọn ô. Dùng type đúng (email, tel, number) còn giúp điện thoại hiện bàn phím phù hợp.
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.
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.
Dùng autocomplete="email", "name", "tel" để trình duyệt tự điền, người dùng điền nhanh hơn.
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.
- 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.
- 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.