Фильтрация списка, поскольку Вы вводите с jQuery

Другая проблема будет принимать вход от Ваших пользователей. Во многих случаях это упрощено входной обработкой, обеспеченной операционной системой, такой как IME в Windows, который работает прозрачно с общими текстовыми виджетами, но это средство не будет доступно для каждой возможной потребности.

30
задан Leif Gruenwoldt 5 August 2011 в 01:40
поделиться

3 ответа

Предполагая, что ваш ul имеет id of theList , это можно сделать следующим образом:

<input type="text" onkeyup="filter(this)" />

<script language="javascript" type="text/javascript">
    function filter(element) {
        var value = $(element).val();

        $("#theList > li").each(function() {
            if ($(this).text().search(value) > -1) {
                $(this).show();
            }
            else {
                $(this).hide();
            }
        });
    }
</script>

В качестве альтернативы для более сжатой версии, основанной на том, что опубликовал Марек Тихкан, вы можете заменить цикл each () следующим. Не уверен, будет ли это работать лучше или хуже.

$('#theList > li:not(:contains(' + value + '))').hide(); 
$('#theList > li:contains(' + value + ')').show();
52
ответ дан 27 November 2019 в 23:26
поделиться

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

$('li').hide(); 
$('li:contains(' + needle + ')').show();
7
ответ дан 27 November 2019 в 23:26
поделиться

Вы можете использовать ] LiveQuery , который был перенесен с php на jQuery Джоном Ресигом.

Примечание : он зависит от метода Quicksilver score в методе PHP , который имеет был перенесен на JavaScript с помощью LiquidMetal.score и joshaven string.score

Пример использования :

$("#text_box_selector").liveUpdate("#list_selector");

Примечание : #list_selector должен найти элемент, содержащий li elements

Plugin + Sort + Live Demo

 // https://github.com/joshaven/string_score String.prototype.score = function (word, fuzziness ) {'использовать строгое'; // Если строка равна слову, идеальное совпадение. если (это === слово) {возврат 1; } // если это не идеальное совпадение и оно пусто return 0 if (word === "") {return 0; } var runningScore = 0, charScore, finalScore, string = this, lString = string.toLowerCase (), strLength = string.length, lWord = word.toLowerCase (), wordLength = word.length, idxOf, startAt = 0, fuzzies = 1, fuzzyFactor, i; // Кешировать fuzzyFactor для увеличения скорости if (fuzziness) {fuzzyFactor = 1 - fuzziness; } // Пройдемся по слову и сложим оценки. // Происходит дублирование кода для предотвращения проверки нечеткости внутри цикла for if (fuzziness) {for (i = 0; i  0) {scores.push ([оценка, я]);}}); jQuery.each (scores.sort (function (a, b) {return b [0] - a [0];}), функция () {jQuery (строки [это [1]]). show (); }); }}}; $ ("# search"). liveUpdate ("# colors"); 
   
  • Кошачья книга
  • Корзина для собак
  • Медвежонок
  • Дверь машины
  • Другой вариант
  • Другое животное
2
ответ дан 27 November 2019 в 23:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: