首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery自动完成不能正常工作

jQuery自动完成不能正常工作
EN

Stack Overflow用户
提问于 2015-01-07 18:29:17
回答 2查看 118关注 0票数 2

当我键入第一个字符时,自动完成将打开,但当我键入另一个或两个字符时,它不会过滤,保持不变。

即使在第一个字符上,打开列表对于任何类型的内容也是一样的,按顺序(没有过滤器)是来自web服务的。

这是我的代码:

代码语言:javascript
复制
$(function() {
  $('#to').autocomplete({
    source: 'json/searchobjects.php',
          minLength: 1,
          select: function(event, ui) {
              globalDest = ui.item.latlng;
          }
  });
});

以下是JSON对象:

代码语言:javascript
复制
[
{
label: "label-1",
value: "val-1"
},
{
label: "label-2",
value: "val-2"
} 
]

它的样子,我错过了什么。

谢谢你的帮助

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-07 18:43:04

我以前也经历过这个问题。在为结果服务的PHP脚本中,需要根据jQuery自动完成脚本传递给它的值进行筛选。对这个过滤器使用$_GET‘’term‘,因为这是自动完成的用法。

jQuery自动完成插件是以"term“作为变量向您的脚本发送GET请求,据我所知,您无法配置此设置。

请注意,您可能希望将所需字符的数量增加到一个以上,因为您将获得大量用户不关心的返回结果。我发现三个字符通常是速度和有用性之间的一个很好的平衡。

票数 2
EN

Stack Overflow用户

发布于 2015-01-07 18:43:59

根据您的编辑,您的json必须是["el1","el2",...,"el3"]类型,或者如果您需要保持[{},{},...]类型。但如果您需要使用对象列表,请按以下方式使用

代码语言:javascript
复制
      source: function (request, response) {
            jQuery.getJSON(u, {
                term: request.term*,
                json: 'yep'*/
            }).done(function (_result2) {

                //alert(_result2[0].Label)
                response($.map(_result2, function (item) {
                    return {
                        label: item.Label,
                        value: item.Value,
                        id: item.Value
                    }
                }));
            }).fail(function () {
                alert('fail');
            })
                .error(function () {
                    alert('error');
                });
        }

term作为请求解析器在您的'json/searchobjects.php?term=TERM'中过滤服务器-侧使用select * from table where Label='%$_GET["term"]'之类的

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27826159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档