Показывать результаты только в режиме поиска - PullRequest
0 голосов
/ 12 октября 2018

Я использую библиотеку ListJs для выполнения нечеткого поиска и работает отлично, но есть только одна проблема, я хочу, чтобы результаты показывались только тогда, когда пользователь ищет ине показывает все результаты, как показывает большинство примеров документации.

Я не могу найти ни одного примера для того, что я ищу, возможно, у ListJs есть опция, которая делает результаты доступными только в одном режиме поиска?

HTML:

<div id="sandbox">
    <input class="form-control form-control-lg fuzzy-search" placeholder="Search" />     
    <ul class="list" id="list"></ul>
</div>

JS:

var options = {
    valueNames: [ 
        'productTitle', 
        'productBrand', 
        { name: 'productImage', attr: 'src' }
    ],
    item: '<li>
             <img src="" class="img-fluid productImage" style="height: 100px;" alt="#" />
             <h3 class="productTitle"></h3>
             <p class="productBrand"></p>
           </li>'
};

var userList = new List('sandbox', options);

$.getJSON( "data.json", function( data ) {
    userList.add(data);
});

1 Ответ

0 голосов
/ 25 октября 2018

Хорошо, так что я не уверен, что понял, что вы хотели, но я сделаю это, поскольку вы еще не получили ни одного ответа.

Что я думаю, вы хотите: По умолчанию список скрыт.Когда пользователь фокусируется на поле поиска, появляется список.Когда фокус потерян, список снова скрыт.

Вы можете решить эту проблему с помощью некоторых js (вы можете использовать jquery для селекторов и методы hide () show ()):

HTML:

<div id="users">
  <input class="search" placeholder="Search" />
  <button class="sort" data-sort="name">
    Sort by name
  </button>

  <ul class="list">
    <li>
      <h3 class="name">Jonny Stromberg</h3>
      <p class="born">1986</p>
    </li>
    <li>
      <h3 class="name">Jonas Arnklint</h3>
      <p class="born">1985</p>
    </li>
    <li>
      <h3 class="name">Martina Elm</h3>
      <p class="born">1986</p>
    </li>
    <li>
      <h3 class="name">Gustaf Lindqvist</h3>
      <p class="born">1983</p>
    </li>
  </ul>

</div>
<script src="//cdnjs.cloudflare.com/ajax/libs/list.js/1.5.0/list.min.js"></script>

JS:

// Listjs
var options = {
  valueNames: [ 'name', 'born' ]
};

var userList = new List('users', options);

// Show/hide on focus
var searchField = document.getElementsByClassName('search')[0];
var listDiv = document.getElementsByClassName('list')[0];

// Hide the list by default 
listDiv.style.visibility = 'hidden';

document.addEventListener('DOMContentLoaded', function() {
    searchField.addEventListener('focus', function() {
        // Search input focused
      listDiv.style.visibility = 'visible';
    });
});

document.addEventListener('DOMContentLoaded', function() {
    searchField.addEventListener('focusout', function() {
        // Search input not focused
      listDiv.style.visibility = 'hidden';
    });
});

Вот ссылка на codepen , пример, основанный на другом примере сайта listjs.
Надеюсь, это поможет,Ура!

...