Jquery: фильтр выпадающего списка при вводе - PullRequest
35 голосов
/ 01 апреля 2009

Я использовал прототип плагина, который фильтрует содержимое выпадающего меню при вводе. Например, если вы ввели «cat» в текстовое поле, в раскрывающемся списке в качестве параметров останутся только элементы, содержащие подстроку «cat».

Кто-нибудь знает плагин jquery, который может это сделать?

Ответы [ 8 ]

52 голосов
/ 10 мая 2010

Я просто искал что-то похожее, и лучшим из того, что мне нужно, кажется, JQuery UI MultiSelect . Он превращает поля множественного выбора в довольно гладкий вид двойного списка с живой фильтрацией в главном списке.

РЕДАКТИРОВАТЬ: Новая разработка!

" Chosen - это плагин JavaScript, который делает длинные, громоздкие поля выбора более удобными для пользователя. В настоящее время он доступен как в jQuery, так и в Prototype."

В обозримом будущем я полностью использую Выбран во всех проектах с использованием выбора.

28 голосов
/ 14 апреля 2012

Select2 - это довольно недавний форк Chosen и имеет множество дополнительных функций (например, AJAX + пользовательский HTML для отдельных элементов).

27 голосов
/ 01 апреля 2009

Я написал небольшой скрипт для этого несколько лет назад. Это может быть упаковано как плагин jQuery довольно легко, вероятно. Добро пожаловать.

Я также делаю это в моем Справочнике по функциям PHP Виджет панели инструментов, если вы хотите посмотреть код там.

12 голосов
/ 01 апреля 2009
9 голосов
/ 01 апреля 2009

jQuery автозаполнение плагин

РЕДАКТИРОВАТЬ: Я изначально связался с неправильным плагином автозаполнения.

3 голосов
/ 11 января 2018

$(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>
1 голос
/ 31 декабря 2012

Я только что реализовал эту функцию быстро и грязно. Он использует некоторые глобальные переменные, вы можете улучшить реализацию, чтобы удалить их.

Здесь «#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);
}
1 голос
/ 14 сентября 2009

Попробуйте «фильтр опций jquery», основанный на реальном поле выбора и сопоставлении в середине текста опций: http://plugins.jquery.com/project/jquery_options_filter

для diyism

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...