Develop

[jQuery] 자동완성 Autocomplete 기능 설명 및 사용 방법

issuemaker99 2024. 10. 8. 09:28
728x90

jQuery Autocomplete는 사용자가 입력하는 값에 따라 자동으로 제안 목록을 표시해주는 기능입니다.

사용자는 제안된 목록 중 하나를 선택하거나 계속해서 입력할 수 있으며, 이 기능은 검색 창, 폼 입력 필드, 데이터 필터링 등 다양한 상황에서 유용하게 사용할 수 있습니다. 


1. 기본 사용법

먼저, jQuery와 jQuery UI를 HTML 문서에 포함해야 합니다. 이를 위해 CDN을 사용할 수 있습니다.

<!-- jQuery 라이브러리 -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>

<!-- jQuery UI 라이브러리 및 스타일시트 -->
<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>

이제 기본적인 autocomplete 기능을 사용하는 방법을 살펴보겠습니다.

 

2. 간단한 Autocomplete 예제

다음 예제는 사용자가 입력하는 대로 사전에 정의된 배열의 값을 제안하는 간단한 예제입니다.

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>jQuery Autocomplete 예제</title>
</head>
<body>
    <h2>jQuery Autocomplete 예제</h2>
    <label for="search">검색어 입력: </label>
    <input id="search" type="text">

    <script>
        $(function() {
            // 자동완성에 사용할 데이터 배열
            var availableTags = [
                "Apple",
                "Banana",
                "Cherry",
                "Date",
                "Fig",
                "Grape",
                "Lemon",
                "Mango",
                "Orange",
                "Peach",
                "Strawberry"
            ];

            // #search 필드에 autocomplete 적용
            $("#search").autocomplete({
                source: availableTags
            });
        });
    </script>
</body>
</html>

위 예제에서 availableTags 배열에 있는 과일 이름들이 사용자가 입력할 때마다 제안 목록으로 표시됩니다. 사용자가 한 글자 이상 입력하면 해당 글자로 시작하는 값을 자동으로 필터링하여 제안합니다.

 

3. 외부 데이터 소스와 연동

만약, 제안 목록을 서버에서 가져오거나 외부 API와 연동하고 싶다면, source 옵션에 URL을 지정할 수 있습니다. 이를 통해 사용자가 입력한 내용을 기반으로 서버에 AJAX 요청을 보내고, 서버에서 응답받은 데이터를 제안할 수 있습니다.

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>jQuery Autocomplete - AJAX 예제</title>
</head>
<body>
    <h2>서버 연동 Autocomplete 예제</h2>
    <label for="search">검색어 입력: </label>
    <input id="search" type="text">

    <script>
        $(function() {
            $("#search").autocomplete({
                source: function(request, response) {
                    $.ajax({
                        url: "https://example.com/api/search",
                        dataType: "json",
                        data: {
                            term: request.term // 사용자가 입력한 값
                        },
                        success: function(data) {
                            response(data); // 서버에서 받은 데이터를 제안 목록으로 표시
                        }
                    });
                }
            });
        });
    </script>
</body>
</html>

위 예제에서는 사용자가 입력한 값이 term 파라미터로 서버에 전송되고, 서버에서 JSON 형식의 데이터를 반환하여 제안 목록으로 표시됩니다. 이 방식은 대규모 데이터나 동적 데이터 처리에 유용합니다.

 

4. Autocomplete의 추가 옵션

jQuery Autocomplete는 다양한 옵션을 제공하여 더 많은 기능을 구현할 수 있습니다.

  • minLength: 자동완성 목록이 표시되기 위해 최소한으로 입력해야 하는 글자 수 (기본값: 1)
  • delay: 사용자가 입력을 멈추고 자동완성 목록이 뜨기까지의 지연 시간 (기본값: 300ms)
  • select: 제안된 항목 중 하나를 선택했을 때 실행되는 함수

다음은 minLength와 select 옵션을 사용하는 예제입니다.

<script>
    $(function() {
        $("#search").autocomplete({
            source: availableTags,
            minLength: 2, // 2글자 이상 입력해야 자동완성 작동
            select: function(event, ui) {
                alert("선택된 항목: " + ui.item.value);
            }
        });
    });
</script>

 

 

LIST