1 điểm bởi GN⁺ 2026-03-08 | 1 bình luận | Chia sẻ qua WhatsApp
  • Dù chỉ với 5 chữ số của mã ZIP tại Mỹ có thể tự động xác định thành phố, bang và quốc gia, phần lớn website vẫn không tận dụng điều này
  • Người dùng vẫn phải nhập thủ công địa chỉ, thành phố, bang và quốc gia, đặc biệt còn phải đi qua các menu thả xuống kém hiệu quả khi chọn bang và quốc gia
  • Chỉ cần nhập mã ZIP là có thể tự động hoàn thành; phạm vi tìm kiếm được thu hẹp nên tốc độ và độ chính xác tăng lên, đồng thời chất lượng dữ liệu cũng được cải thiện
  • Dù có thể triển khai bằng API miễn phí và chỉ vài dòng mã đơn giản, nhiều trang web vẫn đang dùng các biểu mẫu lỗi thời
  • Bài viết nhấn mạnh rằng các nhà phát triển và phụ trách sản phẩm cần cải thiện sự kém hiệu quả của biểu mẫu nhập địa chỉ
  • Phần đầu bài có câu sau
    > Có vẻ bạn đến từ Hàn Quốc. Hàn Quốc đã cải tổ hoàn toàn hệ thống mã bưu chính vào năm 2015 nên giờ nó thật sự rất tuyệt. Còn chúng tôi vẫn đang dùng mã bưu chính từ thời chính quyền Kennedy.

Hiệu quả của mã ZIP và vấn đề được đặt ra

  • Mã ZIP gồm 5 chữ số, và từ đó có thể nhận diện thành phố, bang và quốc gia
    • Ví dụ, nếu nhập 90210 thì có thể tự động xác định Beverly Hills, California, United States
  • Phần lớn website vẫn được thiết kế để người dùng nhập theo thứ tự địa chỉ → thành phố → bang → ZIP → quốc gia
    • Khi chọn bang phải tìm trong 50 mục, còn khi chọn quốc gia phải cuộn qua danh sách hơn 200 mục, rất thiếu hiệu quả
  • Bài viết phê phán UX lỗi thời so với thời đại bằng cách nói rằng: “Đã là năm 2026 rồi mà vẫn còn làm kiểu này sao”

Lợi ích của tự động hoàn thành dựa trên mã ZIP

  • Chỉ với việc nhập mã ZIP có thể tự động điền 3 trường (thành phố, bang, quốc gia)
  • Sau khi tự động hoàn thành, phạm vi tìm kiếm địa chỉ giảm xuống còn vài nghìn mục, giúp tăng tốc độ và độ chính xác
  • Người dùng nhập ít hơn, còn bên cung cấp dịch vụ có được dữ liệu sạch hơn
  • Đây không phải công nghệ mới, và có thể triển khai dễ dàng bằng API miễn phí

Các kiểu thiết kế biểu mẫu tệ hại

  • Bước 1: Đặt ZIP ở cuối — các trang lớn như Amazon, Target, Walmart thuộc nhóm này
  • Bước 2: Thu thập ZIP nhưng không làm gì cả — chỉ lưu vào cơ sở dữ liệu mà không tận dụng
  • Bước 3: Cuộn danh sách quốc gia trong menu thả xuống — phải cuộn qua 240 quốc gia mà không có tìm kiếm, thậm chí có nơi Mỹ nằm ở mục “T”
  • Bước 4: Quay lại là biểu mẫu bị xóa sạch — sau khi thanh toán thất bại, toàn bộ dữ liệu nhập biến mất, gây mệt mỏi cho người dùng

Đề xuất cải thiện thêm

  • Tối ưu trường nhập số: khi nhập mã ZIP, dùng inputmode="numeric" để hiển thị bàn phím số trên di động
  • Tận dụng tự động hoàn thành của trình duyệt: cần đặt đúng thuộc tính autocomplete (postal-code, address-line1, country)
  • Cho phép nhập quốc gia trước: vì mã bưu chính có thể bị trùng trên toàn cầu, cũng có thể đặt quốc gia trước dựa trên IP rồi mới nhập ZIP

Kết luận và lời kêu gọi hành động

  • Cấu trúc tối ưu là nhập mã ZIP trước, tự động hoàn thành thành phố, bang, quốc gia, rồi nhập địa chỉ đường phố ở cuối
  • Đây là vấn đề kỹ thuật đã được giải quyết từ lâu và có thể triển khai chỉ với 5 dòng mã
  • Lý do đến nay vẫn chưa được cải thiện là vì quán tính tiếp tục dùng nguyên các mẫu cũ
  • Bài viết kết lại bằng câu hỏi “Vì sao mã ZIP lại nằm ở tận cuối?” và nhấn mạnh rằng mọi người thiết kế biểu mẫu đều cần sửa điều này

1 bình luận

 
GN⁺ 2026-03-08
Ý kiến trên Hacker News
  • Khẳng định rằng chỉ cần 5 chữ số ZIP của Mỹ là có thể suy ra thành phố, bang và quốc gia là một giả định sai
    Mã ZIP có thể bao gồm nhiều thành phố hoặc thậm chí băng qua ranh giới bang
    Cũng có trường hợp mã trùng nhau giữa các quốc gia, nên nếu cố dùng nó để tự động điền thì UX có nguy cơ trở thành thảm họa
    Thà thiết kế trang để tận dụng tính năng autofill của trình duyệt còn tốt hơn nhiều

    • USPS quản lý một “tên thành phố ưu tiên (preferred city name)” và các tên thay thế được chấp nhận cho từng mã ZIP
      Dù ZIP có thể trải qua nhiều thành phố, USPS vẫn xử lý địa chỉ theo ZIP nên ranh giới hành chính không có ý nghĩa
      Vì vậy người dùng có thể bị tự động điền ra tên khác với thành phố họ thực sự đang sống
      Để tra tên thành phố theo ZIP, có thể tham khảo USPS ZIP Code Lookup
    • Khi triển khai thực tế sẽ gặp nhiều trường hợp phức tạp như một thành phố trải trên nhiều ZIP, hoặc có nhiều thành phố trùng tên trong cùng một bang
      Cuối cùng vẫn an toàn hơn nếu yêu cầu nhập đủ thành phố, bang và ZIP
    • Dù trong phần lớn trường hợp mã ZIP có thể suy ra bang và thành phố, đó cũng chỉ là độ chính xác khoảng 95%
      Các trường hợp ngoại lệ còn lại có thể nhập tay, nên cách làm cho nhập ZIP trước vẫn khá hiệu quả
    • Dùng mã bưu chính để tự động lọc các trường còn lại vẫn rất hữu ích
      Tuy nhiên vẫn nên cho phép nhập tự do để người dùng có thể tự sửa
    • Thực ra thời Netscape những năm 1990 với thẻ <FORM>các tính năng HTML cơ bản còn tốt hơn
      Biểu mẫu web ngày nay lại làm hại khả năng sử dụng bằng JavaScript thừa thãi và dropdown không cần thiết
  • Đây là một cách tiếp cận quá lấy Mỹ làm trung tâm
    Tôi nhập mã bưu chính Mexico thì nó lại nhận thành bang Maine của Mỹ
    Việc suy đoán quốc gia chỉ từ mã ZIP là một tiền đề hoàn toàn sai

    • Các trang thương mại điện tử của Mỹ thường thất bại khi cố lint (kiểm tra định dạng) địa chỉ nước ngoài
      Mã bưu chính Na Uy có 4 chữ số nhưng họ lại bắt 5 chữ số, hoặc từ chối các ký tự Na Uy như ø, å, æ như thể đó là ký tự đặc biệt
      Những vấn đề như vậy xảy ra khá thường xuyên, nhưng hệ thống bưu chính Na Uy vẫn cho phép một số cách viết thay thế
    • Đề xuất “hãy nhập ZIP và quốc gia trước” nghe hợp lý hơn
      Khi nhập mã bưu chính, có thể sắp xếp các quốc gia khả dĩ lên đầu danh sách, và để mọi trường đều có thể chỉnh sửa
    • Tôi nhập mã bưu chính Pháp thì nó lại nhận thành một thành phố ở Mỹ
      Nhưng nếu dùng thêm thông tin geolocation từ phía client thì có lẽ sẽ hoạt động đúng 99%, trừ các trường hợp ngoại lệ như người dùng VPN
    • Những năm 1990, IBM từng gửi thư bằng cách chuyển sai mã bưu chính Canada (6 ký tự chữ+số) thành ZIP 5 chữ số kiểu Mỹ
      Những ví dụ như vậy xuất phát từ thái độ của các công ty Mỹ là giả định cả thế giới giống mình
      Một số quốc gia có cung cấp dịch vụ autocomplete dựa trên cơ sở dữ liệu hệ thống bưu chính nội địa,
      nhưng với những địa chỉ không có mã bưu chính thì vẫn không hoạt động
  • Cách bắt nhập ZIP trước gây bất tiện cho hơn 95% dân số thế giới
    Tôi nhập mã bưu chính của mình thì nó nhận là ở Mỹ

  • Tôi nhập mã ZIP của mình thì nó hiện ra Wisconsin, và thậm chí không thể đổi quốc gia sang Hy Lạp
    Các đề xuất cải thiện UX thì tốt đấy, nhưng đừng quên 95% còn lại của Trái Đất

    • Có lẽ nên chọn sẵn quốc gia dựa trên IP, rồi cho người dùng sửa nếu cần
  • Ngoài Mỹ, nhiều nơi không có ZIP, hoặc định dạng khác, hoặc bị trùng
    Vì vậy nên chọn quốc gia trước, rồi mới nhập mã bưu chính
    Ngay cả ở những nước dùng PLZ 5 chữ số như Đức, chỉ mã bưu chính thôi cũng khó xác định chính xác thành phố

  • Với người sống ngoài Mỹ, nhập ZIP vào sẽ ra kết quả vô nghĩa rồi lại phải xóa trường đó đi, rất phiền

    • Ở Anh, chỉ với mã bưu chính là đã có thể thu hẹp xuống trung bình 15–16 địa chỉ
      Vì vậy trên thực tế gần như không cần tự nhập địa chỉ
    • Cũng có những người hoàn toàn không có địa chỉ cố định hoặc mã bưu chính, nên kiểu hệ thống này rất bất tiện
  • Một ngộ nhận phổ biến về địa chỉ của các lập trình viên Mỹ là “ngoài Mỹ thì không có quốc gia nào khác”
    Việc làm ra một hệ thống không hoạt động ở hơn 90% thế giới mà còn chẳng buồn kiểm thử là một vấn đề

    • Tuy vậy, có thể tác giả bài gốc chỉ đang nói về nước Mỹ, chứ không hẳn khẳng định áp dụng được cho toàn thế giới
    • Có vẻ họ không biết rằng mỗi quốc gia đều có hệ thống mã bưu chính riêng
    • Trong những trường hợp như vậy, tôi nghĩ cũng cần ‘nêu tên để phê bình’ (name and shame)
  • Lập luận cho rằng nên nhập ZIP trước không áp dụng được với người dùng ngoài Mỹ
    Với người ở các nước không có ZIP như Turkmenistan thì không rõ họ phải đăng ký kiểu gì

    • Tôi nghĩ người dùng không có ZIP thì chỉ cần bỏ qua trường đó
    • Hệ thống mua sắm ở Đức đã hỗ trợ kiểu tự động hóa này từ lâu
      ZIP không phải tiêu chuẩn quốc tế, nên quy tắc riêng của Mỹ sẽ không thể hoạt động
  • Mã ZIP không hẳn dùng để xác định hoàn toàn thành phố mà gần hơn với vai trò một checksum kiểm tra tính hợp lệ của địa chỉ
    Vì vậy, một phương án thỏa hiệp thực tế là hiển thị ZIP, thành phố và bang theo dạng autocomplete hoặc gợi ý

  • Tôi nhập mã ZIP của Đức thì nó nhận thành sai quốc gia
    Ở Đức, nhiều thị trấn cùng chia sẻ một ZIP, nên không thể biết chính xác thành phố chỉ từ ZIP
    Rốt cuộc đây là cách làm không hoạt động ở quy mô toàn cầu