← Quay lại mục lục

Bài 16 — Form địa chỉ Tỉnh/Quận/Phường

Cascade dropdown 3 cấp với reset behavior + state management. Đặc trưng app Việt Nam.

Trung bình #cascade #dropdown #state-management #vietnam #address

📍 Bài 16: Form địa chỉ Tỉnh / Quận / Phường (Cascade Dropdown)

Form chọn địa chỉ với 3 dropdown phụ thuộc: Tỉnh → Quận/Huyện → Phường/Xã. Bài tập về cascade data + state management.

📌 Quy tắc hoạt động

  1. Tỉnh: load sẵn từ data tĩnh.
  2. Quận/Huyện: ban đầu disabled. Chọn Tỉnh → load Quận tương ứng → enabled.
  3. Phường/Xã: ban đầu disabled. Chọn Quận → load Phường → enabled.
  4. Đổi Tỉnh: phải reset Quận và Phường về placeholder.
  5. Đổi Quận: phải reset Phường về placeholder.
  6. Số nhà + Đường: text input bình thường.
  7. Submit: tất cả bắt buộc, validate đầy đủ trước khi submit.

📌 Test data (subset cho demo)

  • Hà Nội:
    • Hoàn Kiếm: Hàng Bạc, Hàng Buồm, Cửa Đông
    • Ba Đình: Phúc Xá, Trúc Bạch, Vĩnh Phúc
    • Đống Đa: Cát Linh, Văn Miếu, Quốc Tử Giám
  • TP Hồ Chí Minh:
    • Quận 1: Bến Nghé, Bến Thành, Cô Giang
    • Quận 3: Phường 1, Phường 2, Võ Thị Sáu
    • Bình Thạnh: Phường 1, Phường 11, Phường 25
  • Đà Nẵng:
    • Hải Châu: Hải Châu I, Hải Châu II, Phước Ninh
    • Sơn Trà: An Hải Bắc, An Hải Đông, Mân Thái

📋 Bảng đặc tả

#TênLoạiBắt buộcMô tả
1Tỉnh/TPDropdownYesKhởi tạo enabled với placeholder "Chọn tỉnh"
2Quận/HuyệnDropdownYesDisabled cho đến khi chọn Tỉnh
3Phường/XãDropdownYesDisabled cho đến khi chọn Quận
4Số nhàTextYes1-20 ký tự
5ĐườngTextYes2-100 ký tự
6SubmitButtonValidate và submit

🎯 Yêu cầu

  1. Test các flow: chọn → chọn → chọn → submit (happy path).
  2. Test reset cascade: chọn đầy đủ rồi đổi Tỉnh → Quận và Phường có reset không?
  3. Test partial: chọn Tỉnh + Quận, không chọn Phường, rồi submit.
  4. Test rapid switch: đổi Tỉnh nhanh nhiều lần xem có race condition.
⚠️ Bug được cài cắm: cascade reset không hoạt động đúng, validate cho phép skip cấp, disabled state không correct, race condition.
🔐

Vui lòng đăng nhập để nộp bài.

Đăng nhập
🔐

Tab dành cho giảng viên

Tab này chứa danh sách các lỗi đã cài cắm trong form. Vui lòng nhập mã giảng viên để mở khóa. Mã sẽ ghi nhớ trong phiên làm việc — chỉ cần nhập 1 lần cho cả 3 bài.