Từ quan điểm kỹ thuật, chúng hoàn toàn khác nhau. <datalist>
là một thùng chứa các tùy chọn trừu tượng cho các yếu tố khác. Trong trường hợp của bạn, bạn đã sử dụng nó với <input type="text"
nhưng bạn cũng có thể sử dụng nó với phạm vi, màu sắc, ngày tháng, v.v ... http://demo.agektmr.com/dirthist/
Nếu sử dụng nó với kiểu nhập văn bản, như một kiểu tự động hoàn thành, thì câu hỏi thực sự là: Sử dụng kiểu nhập văn bản dạng tự do hay danh sách tùy chọn được xác định trước là tốt hơn? Trong trường hợp đó tôi nghĩ câu trả lời rõ ràng hơn một chút.
Nếu chúng ta tập trung vào việc sử dụng <datalist>
làm danh sách các tùy chọn cho trường văn bản thì đây là một số khác biệt cụ thể giữa hộp đó và hộp chọn:
- Một
<datalist>
hộp văn bản được cung cấp có một chuỗi cho cả nhãn hiển thị và gửi. Một hộp chọn có thể có giá trị gửi khác với nhãn hiển thị <option value='ie'>Internet Explorer</option>
.
- Một
<datalist>
hộp văn bản cho ăn không hỗ trợ <optgroup>
thẻ để tổ chức hiển thị.
- Bạn không thể giới hạn người dùng trong danh sách các tùy chọn
<datalist>
giống như bạn có thể với <select>
.
- Sự kiện onchange hoạt động khác nhau. Trên một
<select>
phần tử, sự kiện onchange được kích hoạt ngay lập tức khi thay đổi, trong khi đó với <input type="text"
sự kiện được kích hoạt sau khi phần tử mất tiêu điểm hoặc người dùng nhấn enter.
<datalist>
đã thực sự hỗ trợ đốm trên các trình duyệt. Cách để hiển thị tất cả các tùy chọn có sẵn là không nhất quán và mọi thứ chỉ trở nên tồi tệ hơn từ đó.
Điểm cuối cùng thực sự là một điểm lớn trong quan điểm của tôi. Vì bạn sẽ phải có một dự phòng tự động hoàn thành phổ quát hơn, nên gần như không có lý do gì để trải qua sự cố cấu hình a <datalist>
. Ngoài ra, bất kỳ thao tác cắm tự động hoàn chỉnh nào cũng sẽ cho phép các cách định kiểu hiển thị các tùy chọn của bạn, điều <datalist>
này không thực hiện được. Nếu các yếu tố <datalist>
được chấp nhận <li>
mà bạn có thể thao tác theo cách bạn muốn, nó sẽ thực sự tuyệt vời! Nhưng không.
Cũng trong chừng mực mà tôi có thể nói, <datalist>
tìm kiếm là một kết hợp chính xác từ đầu chuỗi. Vì vậy, nếu bạn có <option value="internet explorer">
và bạn đã tìm kiếm 'thám hiểm', bạn sẽ không nhận được kết quả. Hầu hết các plugin tự động hoàn thành sẽ tìm kiếm bất cứ nơi nào trong văn bản.
Tôi chỉ được sử dụng <datalist>
như một người trợ giúp tiện lợi nhanh chóng và lười biếng cho một số trang nội bộ mà tôi biết chắc chắn 100% rằng người dùng có Chrome hoặc Firefox mới nhất và sẽ không cố gửi các giá trị không có thật. Đối với bất kỳ trường hợp nào khác, thật khó để khuyến nghị sử dụng <datalist>
do hỗ trợ trình duyệt rất kém.