对jQuery自动完成中的值进行排序

Pra*_*een 7 jquery jquery-ui jquery-ui-autocomplete

我有一个类似的数组

["JOAQUIN", "BERNARDINO", "MODOC","ALASKA","MADERA", "ANDERSON"]
Run Code Online (Sandbox Code Playgroud)

在哪里我填充它们jQuery UI Autocomplete.然而,排序的顺序似乎很奇怪.
例如:(但我有更多的no.of记录)当我输入"a"时它返回

JOAQUIN
BERNARDINO
ALASKA
MADERA
ANDERSON
Run Code Online (Sandbox Code Playgroud)

我正在尝试的是(开始)

ALASKA    
ANDERSON
Run Code Online (Sandbox Code Playgroud)

JSFiddle为我的例子

可能吗?有人能指出我正确的方向.

更新:

在此输入图像描述

Dip*_*mar 5

var myarray= ["JOAQUIN", "BERNARDINO", "MODOC","ALASKA","MADERA", "ANDERSON"]
myarray.sort();
Run Code Online (Sandbox Code Playgroud)

阅读更多

见演示

我们将两个参数传递给源一个request,第二个是response,

  • request 是代表我们正在制作的请求对象,在我们的例子中,它是我们在文本框中键入的字母.

  • response 功能将返回我们自动完成选择选项.

现在$.map我们正在检查带有数组的类型化单词,我们将其命名为json.

json.toUpperCase().indexOf(request.term.toUpperCase()) 此行将键入的单词和数组转换为相同的大小写并返回它.

和匹配将是最终结果,其中包含您询问的项目列表.

并且response(matches);将其发送到自动完成.


Sta*_*avm 5

我在使用对象而不是简单的字符串数组时遇到了同样的问题,并且需要在检索结果后进行排序(以实现列表顶部的“startswith”建议)。所以对于未来的搜索者,我会添加我的解决方案。

使用 JQuery,您可以在结果对象的 .label 中搜索以用户输入开头的字符串,并将结果的其余部分合并到这些字符串中,合并后使用 Underscore.js 库删除重复项。

例如:

var objects_array = [{"label":"A_ABC","value":"0"},{"label":"B_ABC","value":"1"},{"label":"C_ABC","value":"2"}];

$(document).ready ( function() {

$('#search').autocomplete({
    source: function (request, response) {

        var results = $.ui.autocomplete.filter(objects_array, request.term);               

        var top_suggestions = $.grep(results, function (n,i) {
                                 return (n.label.substr(0, request.term.length).toLowerCase() == request.term.toLowerCase());
                              });

        var merged_results = $.merge(top_suggestions,results);

        var final_results = _.uniq(merged_results,"label");

        response(final_results);
    }
});

});
Run Code Online (Sandbox Code Playgroud)

jquery ui 以

结果示例:http : //i.stack.imgur.com/GKJ8d.png