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 ô.

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.