Tôi biết điều này đã được nói trước đó, nhưng jQuery Autocomplete sẽ làm chính xác những gì bạn cần. Bạn nên kiểm tra các tài liệu như autocomplete là rất tùy biến. Nếu bạn đã quen thuộc với javascript thì bạn sẽ có thể làm việc này. Nếu không tôi có thể cung cấp cho bạn một vài gợi ý, như tôi đã làm điều này một lần trước đây, nhưng hãy cẩn thận tôi cũng không thạo trong javascript bản thân mình, vì vậy chịu với tôi về điều này.
Tôi nghĩ rằng điều đầu tiên bạn nên làm là chỉ nhận được một trường văn bản tự động điền đơn giản đang hoạt động trên trang của bạn và sau đó bạn có thể tùy chỉnh nó từ đó.
Tiện ích tự động điền chấp nhận dữ liệu JSON như tùy chọn 'nguồn:'. Vì vậy, bạn nên thiết lập ứng dụng của mình để tạo ra 20 danh mục cấp cao nhất và các danh mục phụ ở định dạng JSON.
Điều tiếp theo cần biết là khi người dùng nhập vào trường văn bản của bạn, tiện ích tự động điền sẽ gửi giá trị đã nhập vào thông số được gọi là "thuật ngữ".
Vì vậy, giả sử đầu tiên bạn thiết lập trang web của bạn để cung cấp các dữ liệu JSON từ một URL như thế này:
/categories.json
Sau đó nguồn autocomplete của bạn: tùy chọn sẽ là 'nguồn: /categories.json'.
Khi một người dùng nhập vào textfield, chẳng hạn như 'đầu Cata ...' widget autocomplete sẽ bắt đầu gửi các giá trị trong tham số 'hạn' như thế này:
/categories.json?term=first-cata
chí này trả lại dữ liệu JSON về tiện ích được lọc theo bất kỳ thứ gì khớp với 'first-cata' và điều này được hiển thị dưới dạng đề xuất tự động điền.
Tôi không chắc chắn những gì bạn đang lập trình, nhưng bạn có thể chỉ định cách tham số 'thuật ngữ' tìm thấy kết quả phù hợp. Vì vậy, bạn có thể tùy chỉnh điều này, để cụm từ tìm thấy một kết hợp ở giữa một từ nếu bạn muốn. Ví dụ: nếu người dùng nhập 'hoặc', mã của bạn có thể khớp với 'sp hoặc ts'.
Cuối cùng, bạn đã nhận xét rằng bạn muốn có thể chọn tên danh mục nhưng có tiện ích tự động hoàn tất gửi ID danh mục không phải tên.
Điều này có thể dễ dàng thực hiện với một trường ẩn. Đây là những gì được hiển thị trong tài liệu tự động hoàn thành jQuery.
Khi người dùng chọn danh mục, JavaScript của bạn sẽ cập nhật trường ẩn với ID.
Tôi biết câu trả lời này không phải là rất chi tiết, nhưng đó là chủ yếu là bởi vì tôi không chắc chắn những gì bạn đang lập trình, nhưng ở trên nên chỉ cho bạn đi đúng hướng. Điều cần biết là bạn có thể làm thực tế bất kỳ tùy biến nào bạn muốn với tiện ích này, nếu bạn sẵn sàng dành thời gian để tìm hiểu nó.
Đây là những nét rộng, nhưng bạn có thể look here đối với một số ghi chú tôi đã thực hiện khi tôi triển khai một cái gì đó tương tự như những gì bạn muốn trong ứng dụng Rails.
Hy vọng điều này sẽ hữu ích.
Đây chính xác là lý do tại sao tôi yêu Stackoverflow. CÁM ƠN! – palmic
@Lance May, hai Tôi cũng đang tìm kiếm những gì bạn đã đề xuất. Nhưng tôi muốn làm điều đó với hoàn thành tự động ajax. Thay vì tự động hoàn tất tĩnh. Tìm kiếm một giải pháp ... – vissu
Trừ khi tôi hiểu lầm bạn, Vissu, bạn chỉ đơn giản là muốn danh sách này được trả về từ một địa điểm từ xa thay vì là một tập hợp các tùy chọn cứng. Nếu đó là chính xác, có một mẫu từ xa trên cùng một trang (neo khác nhau, nhưng vẫn là cùng một bản demo) có thể giúp http://jqueryui.com/demos/autocomplete/#remote. Nếu đó không phải là ý của bạn, xin vui lòng cho tôi biết. Cảm ơn. – Lance