【JavaScript】入力フォームの自動補完機能を実装する方法

【JavaScript】入力フォームの自動補完機能を実装する方法 JavaScript

入力フォームに自動補完機能(オートコンプリート)を追加することで、ユーザーの入力作業を効率化し、入力ミスの防止にもつながります。本記事では、JavaScriptを使って簡単なオートコンプリート機能を実装する方法をご紹介します。

自動補完の概要

オートコンプリート機能とは、ユーザーが入力を始めた際に、それに一致する候補をリアルタイムで表示し、選択できるようにする仕組みです。たとえば、都道府県や駅名、製品名など、あらかじめ決められた選択肢の中から提案を行います。

基本的なHTML構造

<input type="text" id="autocomplete-input" placeholder="入力してください..." />
<ul id="suggestion-list"></ul>

JavaScriptによるオートコンプリートの実装

次に、JavaScriptで候補表示のロジックを実装します。

const dataList = [
  "東京", "大阪", "名古屋", "札幌", "福岡", "広島", "仙台", "横浜", "神戸", "京都"
];

const input = document.getElementById("autocomplete-input");
const suggestionList = document.getElementById("suggestion-list");

input.addEventListener("input", () => {
  const query = input.value.toLowerCase();
  suggestionList.innerHTML = "";

  if (query === "") return;

  const matches = dataList.filter(item =>
    item.toLowerCase().startsWith(query)
  );

  matches.forEach(match => {
    const li = document.createElement("li");
    li.textContent = match;
    li.addEventListener("click", () => {
      input.value = match;
      suggestionList.innerHTML = "";
    });
    suggestionList.appendChild(li);
  });
});

CSSで候補リストを整える

#suggestion-list {
  border: 1px solid #ccc;
  max-height: 150px;
  overflow-y: auto;
  margin-top: 4px;
  padding: 0;
  list-style: none;
}

#suggestion-list li {
  padding: 8px;
  cursor: pointer;
}

#suggestion-list li:hover {
  background-color: #eee;
}

発展:候補をサーバーから取得するには?

サーバーに存在する大量のデータを対象とする場合は、Ajaxを使って非同期に候補を取得する方法が有効です。たとえば、fetch()でPHPなどのサーバー側スクリプトと連携すれば、柔軟な補完機能を構築できます。

まとめ

オートコンプリート機能は、ユーザー体験を向上させる非常に有効なUI要素です。JavaScriptだけで手軽に導入できるため、検索フォームや入力支援などにぜひ活用してみてください。