jQuery 自动完成是否使用动态数组作为源



我目前正在尝试使用存储在javascript变量中的源代码创建自动完成功能,但是该变量可以通过另一个函数进行更新。因此,我希望每次用户更新自动完成字段时,都会生成自动完成的source字段。

这是我使用的代码:

<head>
    <script>
        var availableTags = ['java', 'javascript']
        // can be called anytime
        var addToTags = function(str){availableTags.push(str)}
        $(function() {
            $( "#tags" ).autocomplete({
                source: availableTags
            });
        });
    </script>
</head>
<body>
    <div class="ui-widget">
        <label for="tags">Tags: </label>
        <input id="tags" />
    </div>
</body>

我需要做一个类似回调的函数吗?

存储在 JavaScript 变量中的源,但此变量可以由另一个函数更新。

这应该可以工作。如果自动完成和更新函数都引用同一个数组,您可以随时推送新值,这些值将在下次计算数组时使用(例如击键时)。

我希望每次用户更新自动完成字段时,都会生成自动完成的源字段。

那是另一回事。是的,这需要一个回调函数来动态生成source数组,但这很简单。查看文档:

$( "#tags" ).autocomplete({
    source: function(request, resolve) {
        // fetch new values with request.term
        resolve(availableTags);
    }
});

只需在函数中添加重置调用即可自动完成addToTags

var addToTags = function(str){
   availableTags.push(str);
   $( "#tags" ).autocomplete({
       source: availableTags
   });
}

很简单

$( "#tags" ).autocomplete('option', 'source', availableTags)

设置可用标签数组在需要的地方

最新更新