如何写 jquery 输入自动完成

How to write jquery input autocomplete

我正在尝试为输入标签编写自动完成,自动完成数组来自 ajax 调用的结果。我已经尝试了很多次,但它仍然没有获取输入搜索的数据。我正在使用 Jquery 1.11.3 version.please 求助!!

使用此 jquery 库进行动态自动完成 https://jqueryui.com/autocomplete/

您需要在收到 AJAX 调用的响应后绑定 jquery 自动完成。这并不简单。您需要使用自动完成 API(例如 select)、source 和 focus 事件来使其工作。下面是将来自 ajax 响应的用户列表绑定到自动完成输入框的图示。

select 函数中,您需要搜索所有用户名称为 属性 的输入值,并仅过滤那些记录。这段代码只不过是根据 name 属性.

从用户数组列表中搜索用户

<!doctype html>
<html lang="en">

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>jQuery UI Fetch Users</title>
    <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
    <link rel="stylesheet" href="/resources/demos/style.css">
    <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
    <script src="https://code.jquery.com/ui/1.11.3/jquery-ui.min.js"></script>
    <script>
        $(function () {
            fetchUsers();
        });

        function fetchUsers() {
            $.ajax({
                url: 'https://jsonplaceholder.typicode.com/users/',
                type: 'GET',

                contentType: "application/json; charset=utf-8",

                success: function (data) {
                    console.log(data);
                    if (data) {
                        $("#users").autocomplete({
                            source: function (request, response) {
                                response($.map(data, function (obj, key) {
                                    var name = obj.name.toUpperCase();

                                    if (name.indexOf(request.term.toUpperCase()) != -1) {
                                        return {
                                            label: obj.name,
                                            value: obj.id
                                        }
                                    } else {
                                        return null;
                                    }
                                }));

                            },
                            focus: function (event, ui) {
                                event.preventDefault();
                            },
                           
                            select: function (event, ui) {
                                event.preventDefault();
                                $('#users').val(ui.item.label);
                            }
                        });
                    }
                },

                error: function (error) {
                    console.log(error);
                }
            });
        }
    </script>
</head>

<body>

    <div class="ui-widget">
        <label for="tags">Users: </label>
        <input id="users">
    </div>


</body>

</html>

有关自动完成的更多详细信息 API 请参阅 jQuery UI documentation