2013-05-03 68 views
1

我有以下jquery函数,将源作为服务器的json。 但是,当我在客户端运行此脚本时,只要我键入,我从相同的值获得多个,并且当我继续输入密钥时它不断增加。bootstrap typeahead自动完成从相同的值返回多个

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

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