2009-04-01 43 views
32

Tôi đã sử dụng một plugin nguyên mẫu để lọc nội dung của menu thả xuống khi bạn nhập. Vì vậy, ví dụ: nếu bạn nhập 'cat' vào hộp văn bản, chỉ các mục chứa chuỗi con 'con mèo' sẽ được để lại dưới dạng tùy chọn trong trình đơn thả xuống.Jquery: Danh sách bộ lọc thả xuống khi bạn nhập

Có ai biết plugin jquery có thể thực hiện việc này không?

Trả lời

27

tôi đã viết a little script to do this một vài năm trước đây. Nó có thể được đóng gói như một trình cắm thêm jQuery khá dễ dàng, có thể. Bạn đang chào đón nó.

Tôi cũng làm điều này trong tiện ích Trang tổng quan PHP Function Reference Bảng điều khiển của mình nếu bạn muốn xem mã ở đó.

+0

Đây chính xác là những gì tôi đã làm sau. Bạn có phiền nếu ai đó đóng gói này như là một plugin JQuery và phân phối nó? Tôi đang nghĩ đến việc phát hành một số plugin vào tháng tới và điều này sẽ tạo ra một plugin tốt. –

+0

Đi cho nó. Có thể liên kết trở lại trang gốc trong nguồn, nếu điều đó ổn chứ? –

+0

Chắc chắn, nếu nó được phát hành! Tôi đã ngồi trên một tải mã mà tôi giữ ý nghĩa để phát hành như JQuery/nguyên mẫu bổ sung fsince đầu năm nay. –

8

jQuery autocomplete plugin

EDIT: Tôi bước đầu được liên kết với plugin tự động hoàn thành sai.

+0

Plugin này được cập nhật lần cuối hơn một năm trước (tháng 1 năm 2008); đó là một chút dài trong thời gian i-net. – BryanH

+0

Nó thực hiện công việc một cách hoàn hảo trên tất cả các trình duyệt theo như tôi có thể nói - và tôi đã có nó trong sản xuất. Bây giờ bạn đã cho tôi một chút lo lắng ... – karim79

+0

Liệu nó lọc danh sách hay nó chỉ tạo danh sách dựa trên đầu vào? –

50

Tôi chỉ tìm kiếm một cái gì đó tương tự, và tốt nhất cho những gì tôi cần có vẻ là JQuery UI MultiSelect. Nó biến các hộp chọn nhiều thành một chế độ xem danh sách kép trơn tru, với bộ lọc trực tiếp trên danh sách chính.

EDIT: Phát triển mới!

"Chosen là một plugin Javascript mà làm dài, chọn hộp trở nên cồng kềnh hơn nhiều người dùng thân thiện. Nó hiện đang có sẵn trong cả hai hương vị jQuery và Prototype."

Tôi đang sử dụng hoàn toàn Chosen trên tất cả các dự án được chọn sử dụng trong tương lai gần.

+1

+100 điểm! MultiSelect chính là plugin mà tôi đã tìm kiếm! – Mark

+2

@Mark Thanh toán [Đã chọn] (http://harvesthq.github.com/chosen/); nó có vẻ tốt hơn nhiều so với MultiSelect. –

+0

Lựa chọn là tốt nhất! – dariol

25

Select2 là một ngã ba khá gần đây được chọn và có nhiều tính năng hơn (ví dụ: AJAX + HTML tùy chỉnh cho từng mục).

1

Tôi vừa triển khai tính năng này nhanh chóng và bẩn. Nó sử dụng một số biến toàn cầu, bạn có thể muốn cải thiện việc triển khai để loại bỏ các biến này.

Ở đây '#xsca_member_filter' là bộ lọc làm đầu vào văn bản và '#members' là đầu vào được chọn.

$('documenet').ready(function(){ 
    init(); 
    $('#xsca_member_filter').keyup(function(){ 
     filter($(this)); 
    }); 
}); 

//save all available options with their values and the empty option. 
init = function(){ 
    options = new Object(); 
    $('#owner option').each(function(){ 
     var obj = $(this); 
     if(obj.attr("value") != "") 
      options[obj.attr('value')] = obj.html(); 
     else 
      emptyOption = obj.html(); 
    }); 
    selObj = $('#owner'); 
}; 

filter = function(elem){ 
    var filter = elem.val(); 
    var selected = $('#owner option:selected').val(); 

    //delete all options and add the empty option 
    selObj.html(""); 
    selObj.append("<option> "+emptyOption+" </option>"); 

    //add all options conaining the filter string 
    for(value in options){ 
     var option = options[value]; 
     if((options[value]).indexOf(filter) != -1){ 
      selObj.append("<option value='"+value+"'> "+options[value]+" </option>"); 
     } 
    } 

    //select the previously selected option 
    $("#owner option[value = '"+selected+"']").prop("selected", true); 
} 
0

$(document).ready(function() { 
 
    $("#myInput").on("keyup", function() { 
 
    var value = $(this).val().toLowerCase(); 
 
    $("#filter *").filter(function() { 
 
     $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1) 
 
    }); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
 

 
<h2>Filter</h2> 
 
<input id="myInput" type="text" placeholder="Search.."> 
 
<br><br> 
 
<div class="filter-by"> 
 
    <span>Filter by:</span> 
 
    <select class="status-filter" id="filter"> 
 
    <option value="">All</option> 
 
    <option value="paid">Paid</option> 
 
    <option value="accepted">Accepted</option> 
 
    <option value="pending">Pending</option> 
 
    <option value="rejected">Rejected</option> 
 
    </select> 
 
</div>

+0

Ví dụ về thẻ chọn đơn giản. –

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