Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.11.2016, 12:54
Аспирант
Отправить личное сообщение для qumo Посмотреть профиль Найти все сообщения от qumo
 
Регистрация: 16.06.2016
Сообщений: 51

Jquery contains поиск в div
Данный код всегда будет работать, если есть хотя бы 1 символ в строке. Как можно изменить код, чтобы при вводе каждой буквы изменялся результат поиска?
Код:
<div class="content">
 <form class="search">
   <div class="search-input">
     <input type="search-item" id="suggest"><a href="#" class="search-clear"></a>
   </div><a href="#" class="search-cancel">Отмена</a>
 </form>
 <div class='list-block no-margin'>
  <ul>
   <li>
    <a href='#' class='item-link item-content'>
     <div class='item-inner'>
      <div class='item-title item-subtitle'>Текст, который будет найден</div>
     </div>
    </a>
   </li>
  </ul>
 </div>
</div>
$('#suggest').bind('keyup onchange',function(){
  var Search = $('#suggest').val();
  var Result = $(".list-block .item-link:contains("+Search+")");
  console.log("Кол-во результатов:" + Result.length);
  console.log("Кол-во символов в input:" + Search.length);
  for(var i = 0; i < Result.length; i++){
    if(Search != '' && Search.length > 0){
      $(".list-block .item-link:contains("+Search+")").addClass('on');
      $(".list-block .item-link").hide();
      $('.on').show();
    } else {
      $(".list-block .item-link:contains("+Search+")").removeClass('on');
      $(".list-block .item-link").show();
    }
  }
})

Последний раз редактировалось qumo, 10.11.2016 в 13:26.
Ответить с цитированием
  #2 (permalink)  
Старый 10.11.2016, 13:59
Аватар для Coriolan161
Профессор
Отправить личное сообщение для Coriolan161 Посмотреть профиль Найти все сообщения от Coriolan161
 
Регистрация: 21.11.2015
Сообщений: 440

qumo,
надо событие 'input' использовать вместо 'keyup' и 'onchange'.
Ответить с цитированием
  #3 (permalink)  
Старый 10.11.2016, 14:03
Аспирант
Отправить личное сообщение для qumo Посмотреть профиль Найти все сообщения от qumo
 
Регистрация: 16.06.2016
Сообщений: 51

Спасибо за упрощение кода=) А по самому сабжу есть что?=)

Последний раз редактировалось qumo, 10.11.2016 в 14:15.
Ответить с цитированием
  #4 (permalink)  
Старый 10.11.2016, 14:17
Аватар для Coriolan161
Профессор
Отправить личное сообщение для Coriolan161 Посмотреть профиль Найти все сообщения от Coriolan161
 
Регистрация: 21.11.2015
Сообщений: 440

qumo,
1) Почему .bind? вместо .bind использовать .on
2)
Search != '' && Search.length > 0

Можно ж просто
Search !== ''

Но если тебе нужна защита от ввода пробелов то надо регулярное выражение и тестить инпут.val()
3) Вместо родителя (то есть лист-блок)
$(".list-block .item-link:contains("+Search+")")

Можно использовать контекст
$('.item-link:contains('+Search+')', '.list-block')
Ответить с цитированием
  #5 (permalink)  
Старый 10.11.2016, 15:09
Аспирант
Отправить личное сообщение для qumo Посмотреть профиль Найти все сообщения от qumo
 
Регистрация: 16.06.2016
Сообщений: 51

Спасибо за информацию=) Сейчас мне главное, чтобы при вводе каждой буквы изменялся результат поиска=) Остальное не критично=)
Ответить с цитированием
  #6 (permalink)  
Старый 10.11.2016, 16:59
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от qumo
чтобы при вводе каждой буквы изменялся результат поиска
Фильтрация по текстовому полю

по ссылке нужный вам скрипт, достаточно заменить селекторы на ваши
Ответить с цитированием
  #7 (permalink)  
Старый 10.11.2016, 17:28
Аватар для Coriolan161
Профессор
Отправить личное сообщение для Coriolan161 Посмотреть профиль Найти все сообщения от Coriolan161
 
Регистрация: 21.11.2015
Сообщений: 440

qumo,
Ты достал меня
$('#suggest').on('input', function() {
  var search = $('#suggest').val();
  if (search !== '') {
    $('.item-title').not(':contains('+search+')').parents('li').hide();
    $('.item-title:contains('+search+')').parents('li').show();
  }
  else {
  	$('.item-title').parents('li').show();
  }
});

И это.. контекст можно было в старых jquery указывать(на которых я сидел) - сейчас уже нет
Ответить с цитированием
  #8 (permalink)  
Старый 10.11.2016, 18:06
Аспирант
Отправить личное сообщение для qumo Посмотреть профиль Найти все сообщения от qumo
 
Регистрация: 16.06.2016
Сообщений: 51

Спасибо, ребята, за помощь=)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Jquery ajax получение данных из div и textarea psfdek jQuery 3 30.03.2015 05:15
jQuery распечатать div soltx Элементы интерфейса 3 11.01.2015 00:26
Поиск числа Jquery Dorian_bs Общие вопросы Javascript 4 18.09.2011 21:52
Поиск JQuery FirstFrost Общие вопросы Javascript 1 29.08.2011 12:43
jquery выбрать div с помощью ссылки в нем nioxkzn jQuery 2 02.04.2011 00:40