вторник, 18 июня 2013 г.

jQuery Фильтр содержимого списка через input

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('input[name="filter"]').val('');
$('input[name="filter"]').keyup(function(e){
var inputValue = $.trim($(this).val()).toLowerCase()
, i = 0
, $menuElements = $('.b-menu li')
, len = $menuElements.length;
if (inputValue !== '') {
$menuElements.hide();
for (; i < len; i += 1) {
if (inputValue === $menuElements.eq(i).text().toLowerCase().substr(0, inputValue.length)) {
$menuElements.eq(i).show();
}
}
} else {
$menuElements.show();
}
});
});
</script>
<title>Фильтр</title>
</head>
<body>
<div class="b-selector">
<input type="text" name="filter" />
<ul class="b-menu">
<li class="b-menu__item">Колбаса</li>
<li class="b-menu__item">Масло</li>
<li class="b-menu__item">Молоко</li>
<li class="b-menu__item">Сыр</li>
<li class="b-menu__item">Сметана</li>
</ul>
</div>
</body>
</html>

3 комментария:

  1. Если в строке будет два слова и в Input вписать второе то он его не находить, что делать?

    ОтветитьУдалить
  2. Проверьте ваш код. Вероятно вы где-то допустили опечатку. Мой сценарий универсален и работает при любом количестве слов.

    ОтветитьУдалить
  3. Спасибо! Действительно рабочий скрипт, работает при любом количестве введенных слов. Применил к вложенным в li элементам. Зачет!!!

    ОтветитьУдалить