2013-08-27 63 views
6
<input type="text" list="numbers"> 

<datalist id="numbers"> 
    <option value="110"> 
    <option value="111"> 
    <option value="112"> 
    <option value="113"> 
    <option value="114"> 
    <option value="115"> 
</datalist> 

http://jsfiddle.net/shvPB/Thay đổi giá trị đầu vào trong HTML5 datalist

Kịch bản: bắt đầu
1. Người sử dụng để viết bất kỳ tùy chọn giá trị hoặc mũi tên xuống/lên, và danh sách thả xuống cho thấy các tùy chọn.
2. Người dùng mouseclicks hoặc enterclicks trên một trong các tùy chọn, và quan trọng: cô ấy vẫn có thể di chuyển lên/xuống danh sách.
3. Người dùng nhấp vào bên ngoài trường nhập. Trường nhập không còn tập trung nữa.
4. Người dùng muốn thay đổi lựa chọn của mình và nhấp vào trường nhập nhưng các tùy chọn không hiển thị nữa.

Tôi cũng có thể hiển thị các tùy chọn ở bước 4 như thế nào?

+0

Tôi không nghĩ rằng bạn có thể lập trình kích hoạt datalist. Xem http://stackoverflow.com/questions/16133661/programmatically-make-datalist-of-inputtype-url-appear-with-javascript –

+0

Bạn không thể giống như cách bạn không thể bắt buộc thẻ mở để mở. – j08691

+0

@ j08691 xin vui lòng không nhầm lẫn mọi người với dự đoán của bạn mở chọn với JS thực sự CÓ THỂ được thực hiện và đã được giải quyết ở đây: http://stackoverflow.com/questions/10453393/how-to-open-the-select-input-using-jquery ... điều này cũng cho thấy cách tiếp cận có thể (hoặc có thể không) làm việc cho datalist quá (aproach, không phải là một giải pháp cho datalist ...) –

Trả lời

1

Đây là một giải pháp cụ thể mà nên làm việc cho các nhu cầu của bạn ... (sử dụng jQuery) ...:

Tóm tắt: Hãy yếu tố chọn giống như của riêng bạn, sao chép giá trị từ <datalist> với nó. Sau đó, liên kết 2 sự kiện để nhập: hiển thị/ẩn trên tiêu điểm/làm mờ. Và thêm sự kiện vào mọi phần tử tùy chọn giống như để chuyển một giá trị trên click() vào đầu vào. Nó sẽ là một phần tử tiết kiệm sẽ hiển thị khi không có menu thả xuống của <datalist>. Có một điều phức tạp - việc biến mất được thực hiện bởi setTimeout, vì sự kiện focusout (blur) được kích hoạt sớm hơn sự kiện nhấp chuột ...

Fiddle được tạo cho đến thời điểm này: http://jsfiddle.net/xPx2Z/3/ :)/* chrome look-a-like dropdown */

BTW: bạn không thể có "true" <select> đã mở và vẫn còn focus() ed trên đầu vào, vì vậy giải pháp với yếu tố <select> là không tốt. Vì vậy, tôi đã cập nhật câu trả lời một chút :)

+0

@ greg câu trả lời thay thế trong bình luận, "là một chức năng tự động hoàn thành, nó sẽ chỉ hiển thị các mục trên danh sách của bạn phù hợp với giá trị hiện tại là gì. tất cả sẽ được hiển thị nếu người dùng nhập 110, chỉ 110 trận đấu và chỉ 110 sẽ được hiển thị. người dùng cần xóa đầu vào để xem lại danh sách đầy đủ. Chức năng js đặt giá trị thành "onclick cũng sẽ hoạt động". – Ajay2707

Các vấn đề liên quan