Bài 3. Biểu mẫu và kiểm tra dữ liệu

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.

35 phútCơ bản
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 ô.

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

typeTác dụng
text, email, tel, urlVăn bản có kiểm tra định dạng, bàn phím phù hợp trên điện thoại
number, rangeSố, thanh trượt
date, timeChọn ngày giờ bằng lịch
passwordẨn ký tự
fileTải tệp lên
radio, checkboxChọn một / chọn nhiều
hiddenGử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
  1. Làm biểu mẫu liên hệ gồm tên, email, chủ đề, nội dung.
  2. Thêm pattern cho số điện thoại Việt Nam 10 số bắt đầu bằng 0.
  3. 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.