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为我的例子
可能吗?有人能指出我正确的方向.
更新:

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);将其发送到自动完成.
我在使用对象而不是简单的字符串数组时遇到了同样的问题,并且需要在检索结果后进行排序(以实现列表顶部的“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)
结果示例:http : //i.stack.imgur.com/GKJ8d.png
| 归档时间: |
|
| 查看次数: |
7190 次 |
| 最近记录: |