javascript - Bootstrap 提前输入自动完成从相同的值返回多个

标签 javascript jquery twitter-bootstrap bootstrap-typeahead

我有以下 jquery 函数,它将源作为来自服务器的 json 进行处理。 但是当我在客户端中运行这个脚本时,只要我输入,我就会从相同的值中获得多个值,并且当我继续输入键时它会不断增加。

function autocomplete(html_field, request_url, hidden_field){
    var map = {};
    var objects = [];
    $(html_field).typeahead({
    minlength: 3,
    source: function (query, process) {
        return $.get(request_url, { query: query }, function (data) {
            $.each(data, function(i, obj){
                map[obj.translations__name] = obj;
                objects.push(obj.translations__name);
            });
            return process(objects);
            });
    },
    updater: function (item) {
        $(hidden_field).val(map[item].id);
        return item;
        }
    });
}

有什么想法吗?

最佳答案

我认为你必须在 .each() 函数之前清空数组对象,因为对于每个 jquery 调用,数据都会被插入数组中。

    source: function (query, process) {
        return $.get(request_url, { query: query }, function (data) {
            objects.splice(0, objects.length);
            $.each(data, function(i, obj){
                map[obj.translations__name] = obj;
                objects.push(obj.translations__name);
            });
            return process(objects);
            });

您可以在此处看到空数组:How do I empty an array in JavaScript?

关于javascript - Bootstrap 提前输入自动完成从相同的值返回多个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16359126/

相关文章:

javascript - 隐藏的多能复选框

JavaScript 静态变量

javascript - 将我的 'flipping' 圆圈定位在页面中间

javascript - 如何获取 .att ("value") jQuery

javascript - 是否可以显示: none a list of queries without using an object or array?

jquery - 导出到 Word of Confluence 内容会丢失 CSS 样式

ajax - Django Ajax-Jquery 不获取数据

javascript - 单击外部 Bootstrap 菜单将其关闭

html - 移动 View 右侧的 Bootstrap 空白

html - Bootstrap 3 行问题中的堆叠选项卡