burykinslams
@burykinslams
i am ready to learn

Как допилить фичу в либу?

Задачка для тех кто умеет и любит чего-нибудь поковырять.
Речь о typeahead.js от twitter документация
вот мой пример jsbin
библиотека делает из простого инпута, инпут в котором при вводе выпадают подсказки по совпадениям, хочу заставить ее находить совпадения по каждому слову введенному через пробел, а не строго так как в строке, к примеру при вводе "two one" она должнай найти любую строчку в массиве, где встречаются эти два слова, в любом порядке и в любом регистре.

Они дают возможность дописать кастомный matcher, но попытки его прилепить не увенчались успехом.
Любые мысли будут полезны
  • Вопрос задан
  • 181 просмотр
Решения вопроса 2
Такой matcher должен сработать

matcher: function(item) {
  var lowerCase = function (s) {
    return s.toLowerCase();
  };
  
  var searchWords = this.query.split(' ').map(lowerCase);
  var sourceWords = item.split(' ').map(lowerCase);
  
  var result = sourceWords.filter(function (source) {
    var found = searchWords.filter(function (w) {
      return source == w;
    });
    
    return found.length > 0;
  });
  
  return result.length == searchWords.length;
}
Ответ написан
Комментировать
In4in
@In4in
°•× JavaScript Developer ^_^ ו°
matcher: function(item) {
    return this.query.toLowerCase().split(" ").every(function(word){
        return ~item.toLowerCase().indexOf(word);
    });
}


https://jsbin.com/hetikihere/2/ (добавил регистронезависимость)

Выделение слов додумывайте сами.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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