-->

结果jQuery的自动完成订单(jQuery Autocomplete order of resul

2019-07-29 19:08发布

我使用jQuery的自动完成插件以获取使用AJAX调用服务器输入字符串的完成建议。 此外,服务器需要的顺序我希望他们出现,但自动完成显示他们以不同的顺序返回结果的照顾。

如何配置jQuery的自动完成不重新排序输出? 我不要求任何类型的处理对客户的最终根据需求数据已经位列/排序。

Answer 1:

简单地发送它自动完成应该这样做之前,分拣服务器的测试结果。

所以,如果你echo json_encode($return_arr); 使用sort()的函数$return_arr

您也可以尝试这样的事:

其中的逻辑是建立与术语开始比赛的数组,然后串联与包含术语,但不与它开始的比赛。

$(document).ready(function () {
    var source = ['Adam', 'Benjamin', 'Matt', 'Michael', 'Sam', 'Tim'];
    $("input").autocomplete({
        source: function (request, response) {
            var term = $.ui.autocomplete.escapeRegex(request.term)
                , startsWithMatcher = new RegExp("^" + term, "i")
                , startsWith = $.grep(source, function(value) {
                    return startsWithMatcher.test(value.label || value.value || value);
                })
                , containsMatcher = new RegExp(term, "i")
                , contains = $.grep(source, function (value) {
                    return $.inArray(value, startsWith) < 0 &&
                        containsMatcher.test(value.label || value.value || value);
                });

            response(startsWith.concat(contains));
        }
    });
});

例如: http://jsfiddle.net/zkVrs/

来源: https://stackoverflow.com/a/8302996/973155



Answer 2:

嗯,这竟然是比我想象的简单。 我决定读插件的代码和注释掉的排序我输出的代码进行修改。

这时候,我发现了一个变量“sortResults:真”的默认值。 因此,所有我需要的是该变量设置为false。 我没有在文档中虽然找到。

$('#search').autocomplete ( { url: "index.php", sortResults: false } )

现在输出的准确顺序,我需要。

我的阅读代码,以查找/解决从这里问题的思路: jQuery的“自动完成”插件是搞乱我的数据的顺序 (这是不一样的插件)

谢谢。 :)



Answer 3:

因为有一个在jQuery的自动完成插件的当前版本没有sortResults选项,我不得不寻找其他的解决了这个问题,并发现了该插件分类结果的唯一原因是,服务器的响应被归每次它不是一个纯粹的数组对象{标签...,值:...}。

考虑到PHP作为您使用的语言,json_encode(array_values($ your_array)); 应该做的伎俩。



文章来源: jQuery Autocomplete order of results