@jensen6720185

Возможен ли поиск с пробелами и кусками слов на jQuery?

Подскажите как сделать так чтобы поиск был не просто по тексту в том же порядке, а к примеру по кличеству символов в любом порядке. Например если я введу "Новый 2" выведется только 1, а второй нет...

Товар Новый 2
Новый Товар 323

В какую сторону копать?

jQuery(document).ready(function($){
	function sample_search() {
		$.expr[":"].containsignorecase = $.expr.createPseudo(function(arg) {
			return function(elem) {
				return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
			};
		});
		
		
		$('.sample_list li').hide();
		$('.sample_list li:containsignorecase('+this.value+')').show();
	};

	$('form #sample_search_field').keyup($.debounce(300, sample_search));
});
  • Вопрос задан
  • 113 просмотров
Решения вопроса 1
Stalker_RED
@Stalker_RED
Разбить поисковую фразу по пробелу, искать каждую часть.
$.expr[":"].containsignorecase = $.expr.createPseudo(function(arg) {
  return function(elem) {
    let capsed = $(elem).text().toUpperCase()
    return arg.toUpperCase().split(' ')
      .every(substr => capsed.includes(substr))
  };
});
https://jsfiddle.net/gLqee5eb/

(к старым браузерам придется адаптировать, или юзать полифиллы)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Ridz
$.expr[":"].containsignorecase = function(elem, index, meta) {
  var text = elem.textContent.toUpperCase();
  return meta[3].toUpperCase().split(/\s+/).every(function(str) {
    return text.indexOf(str) !== -1;
  });
};
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы