bootstrap typeahead autocomplete从相同的值返回多个

时间:2013-05-03 12:37:12

标签: 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;
        }
    });
}

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我认为你必须在你的.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?