带有自动完成jquery的外部Json

时间:2014-09-23 14:07:11

标签: jquery json jquery-ui autocomplete

我尝试使用外部Json作为自动完成Jquery UI插件的源:http://jqueryui.com/autocomplete/

我没有强调好方法,以及json的良好格式。在我的例子中,il在我的json中: [ “TAG1”, “TAG2”, “TAG3”]

自动完成似乎有效,但如果开始输入“a”,则自动完成会提出json中的所有标记。似乎autocomplete不会过滤json的内容,并且始终在json中显示整个标记。 所以,我不明白如何获得正常的行为:例如,当我输入“t”时,自动完成仅向我提出“tag1”。

我的页面在这里: http://tcdemo.fr/temp/test.html

Json在这里: http://tcdemo.fr/temp/search.json

非常感谢

1 个答案:

答案 0 :(得分:0)

查看代码,您可以为解决方案做三件事:

  1. 处理服务器端的过滤并在端点上调用ajax函数,该函数提供过滤结果
  2. 如果它是一组静态对象,则将json加载到.tagit()绑定之外,并将json结果传递给availableTags属性。默认情况下会处理过滤。

    $("#mytags").tagit({
        availableTags: jsonResult, // search.json is loaded into jsonResult
        show_tag_url: "/tags/",
        singleField: true,
        singleFieldNode: $('#submit_tag_names')
    });
    
  3. 否则,如果由于某种原因更喜欢您的方法 - 在javascript端过滤成功结果。将脚本中的成功函数更改为:

    success: function(choices) {
            var filter = search.term.toLowerCase();
            var filteredChoices = $.grep(choices, function(element) {
                // Only match autocomplete options that begin with the search term.
                return (element.toLowerCase().indexOf(filter) === 0);
            });
            showChoices(this._subtractArray(filteredChoices, this.assignedTags()));
        }
    
  4. 希望这有帮助