限制ajax自动完成结果

时间:2018-02-13 18:43:13

标签: jquery ajax django autocomplete

如果数据不是本地数据,您如何限制搜索结果的数量。我知道本地数据很容易被限制,如下所示。

source: function(request, response) {
    var results = $.ui.autocomplete.filter(myarray, request.term);

    response(results.slice(0, 10));`

当我从外部获取数据时,这种方法效果不佳。以下是我的代码。

 $(function() {
  $("#search").autocomplete({
    source: "/accounts/ajax/search/",
    minLength: 2,
    select: function(event, ui ){
        window.open(ui.item.url,'_self')},
    open: function(event, ui) {
        $('.ui-autocomplete').append("<li><a class = \" text-primary\" href='javascript:document.getElementById(\"search_form\").submit();'> See All Result </a></li>");
         },
  });
});

2 个答案:

答案 0 :(得分:2)

您可以替换value for source with a function,然后手动执行ajax请求和结果处理:

$(function() {
  $("#search").autocomplete({
    source: function(request, response) {
      $.get("/accounts/ajax/search?term=" + request.term, function(data) {
        //limit results here
        response(data.slice(0, 10));
      });
    },
    ...
  });
});

答案 1 :(得分:1)

您必须自己制作ajax请求并将有限的结果传递给响应回调。

默认情况下,当source是一个字符串时,会对提供的字符串发出GET请求,其参数名称为term,值为输入值。所以你必须重现这个:

N
n
10
25