37

我使用了一个原型插件,它在您键入时过滤下拉列表的内容。因此,例如,如果您在文本框中键入“cat”,则只有包含子字符串“cat”的项目将作为选项留在下拉列表中。

有谁知道可以做到这一点的jquery插件?

4

8 回答 8

53

我只是在寻找类似的东西,而我需要的最好的东西似乎是JQuery UI MultiSelect。它将多选框变成一个非常漂亮的双列表视图,并在主列表上进行实时过滤。

编辑:新的发展!

Chosen是一个 JavaScript 插件,它使长而笨重的选择框更加用户友好。它目前在 jQuery 和 Prototype 两种风格中都可用。”

在可预见的将来,我将在所有选择使用项目中完全使用Chosen 。

于 2010-05-10T12:42:47.407 回答
30

Select2是 Chosen 的一个相当新的分支,并具有更多的功能(例如 AJAX + 用于单个项目的自定义 HTML)。

于 2012-04-13T22:19:41.210 回答
27

几年前我写了一个小脚本来做到这一点。很可能,它可以很容易地打包为一个 jQuery 插件。不客气。

如果您想查看那里的代码,我也会在我的PHP 函数参考仪表板小部件中执行此操作。

于 2009-04-01T19:24:53.793 回答
12

检查这些插件:

于 2009-04-01T19:02:11.337 回答
10

jQuery自动完成插件

编辑:我最初链接到错误的自动完成插件。

于 2009-04-01T19:00:50.043 回答
7

$(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>

于 2018-01-11T12:24:30.903 回答
1

尝试基于实际选择框并在选项文本中间匹配的“jquery 选项过滤器”:http: //plugins.jquery.com/project/jquery_options_filter

为自我主义

于 2009-09-14T06:37:20.243 回答
1

我只是快速而肮脏地实现了这个功能。它使用一些全局变量,您可能希望改进实现以删除这些变量。

这里的“#xsca_member_filter”是作为文本输入的过滤器,“#members”是选择输入。

$('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);
}
于 2012-12-31T15:56:24.433 回答