- 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
Ý 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
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
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
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ả
Tuy nhiên vẫn nên cho phép nhập tự do để người dùng có thể tự sửa
<FORM>và các tính năng HTML cơ bản còn tốt hơnBiể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
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ế
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
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 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
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
Vì vậy trên thực tế gần như không cần tự nhập địa chỉ
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 đề
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ì
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