Освоение автозаполнения поиска в JavaScript: подробное руководство

В современных условиях веб-разработки автозаполнение поиска стало важнейшей функцией, позволяющей улучшить взаимодействие с пользователем и улучшить функциональность поиска. Предоставляя мгновенные подсказки по мере ввода пользователем текста, автозаполнение поиска помогает пользователям быстро находить релевантные результаты. В этой статье мы рассмотрим различные методы реализации автозаполнения поиска в JavaScript, а также приведем примеры кода.

Метод 1: использование элемента списка данных HTML5

<input type="text" list="suggestions">
<datalist id="suggestions">
  <option value="Apple">
  <option value="Banana">
  <option value="Cherry">
  <option value="Grapes">
</datalist>

Метод 2: автозаполнение AJAX с пользовательским интерфейсом jQuery

<input id="searchInput" type="text">
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://code.jquery.com/ui/1.13.1/jquery-ui.min.js"></script>
<script>
  $(document).ready(function() {
    $("#searchInput").autocomplete({
      source: "/search", // Replace with your server-side endpoint
      minLength: 2 // Minimum characters to trigger autocomplete
    });
  });
</script>

Метод 3. Автозаполнение с помощью Vanilla JavaScript

<input id="searchInput" type="text">
<script>
  const searchInput = document.getElementById('searchInput');
  searchInput.addEventListener('input', function() {
    const inputValue = this.value;
    // Perform AJAX call or fetch to get autocomplete suggestions
    // Update the UI with the received suggestions
  });
</script>

Метод 4. Автозаполнение с использованием сторонних библиотек (например, Typeahead.js)

<input id="searchInput" type="text">
<script src="https://cdnjs.cloudflare.com/ajax/libs/typeahead.js/0.11.1/typeahead.bundle.min.js"></script>
<script>
  const searchInput = document.getElementById('searchInput');
  const suggestions = new Bloodhound({
    datumTokenizer: Bloodhound.tokenizers.whitespace,
    queryTokenizer: Bloodhound.tokenizers.whitespace,
    prefetch: '/suggestions' // Replace with your server-side endpoint
  });

  searchInput.addEventListener('input', function() {
    const inputValue = this.value;
    suggestions.search(inputValue, function(suggestedItems) {
      // Update the UI with the received suggestions
    });
  });

  searchInput.typeahead({
    hint: true,
    highlight: true,
    minLength: 1
  }, {
    name: 'suggestions',
    source: suggestions
  });
</script>

Метод 5: автозаполнение с помощью React (с использованием response-autosuggest)

import React, { useState } from 'react';
import Autosuggest from 'react-autosuggest';
const SearchAutocomplete = () => {
  const [value, setValue] = useState('');
  const [suggestions, setSuggestions] = useState([]);
  const fetchSuggestions = async (inputValue) => {
    // Perform AJAX call or fetch to get autocomplete suggestions
    // Update the state with the received suggestions
  };
  const onSuggestionsFetchRequested = ({ value }) => {
    fetchSuggestions(value);
  };
  const onSuggestionsClearRequested = () => {
    setSuggestions([]);
  };
  const onSuggestionSelected = (_, { suggestionValue }) => {
    // Handle the selected suggestion
  };
  const renderSuggestion = (suggestion) => {
    // Render each suggestion item
  };
  const inputProps = {
    placeholder: 'Search...',
    value,
    onChange: (_, { newValue }) => setValue(newValue)
  };
  return (
    <Autosuggest
      suggestions={suggestions}
      onSuggestionsFetchRequested={onSuggestionsFetchRequested}
      onSuggestionsClearRequested={onSuggestionsClearRequested}
      onSuggestionSelected={onSuggestionSelected}
      renderSuggestion={renderSuggestion}
      inputProps={inputProps}
    />
  );
};
export default SearchAutocomplete;

Реализация автозаполнения поиска в JavaScript обеспечивает отличный способ улучшить качество поиска для пользователей вашего веб-сайта или приложения. В этой статье мы рассмотрели несколько методов достижения этой цели, в том числе использование списка данных HTML5, пользовательского интерфейса jQuery, стандартного JavaScript, сторонних библиотек, таких как Typeahead.js, и React с автоматическим реагированием. Выберите метод, который лучше всего соответствует требованиям вашего проекта, и начните улучшать функции поиска уже сегодня!