Jquery ui jquery ui组合框结果排序
我有一个jQueryUIComboBox自动完成小部件,我正在尝试编写一个匹配器函数来对搜索结果进行排序。 我正在尝试获得首选结果: 当您键入例如lo时,结果应按以下方式排序:Jquery ui jquery ui组合框结果排序,jquery-ui,combobox,jquery-ui-autocomplete,Jquery Ui,Combobox,Jquery Ui Autocomplete,我有一个jQueryUIComboBox自动完成小部件,我正在尝试编写一个匹配器函数来对搜索结果进行排序。 我正在尝试获得首选结果: 当您键入例如lo时,结果应按以下方式排序: 伦敦 博洛尼亚 巴塞罗那 当术语与第一个键入的字母匹配时,它位于第一位,当术语包含字母时,它出现在第一个规则之后 我发现了一些类似的东西,但我不能让它工作。在这个解决方案中,我找不到一种方法来建立matcher变量和term变量之间的关系 组合框原件 来源:函数(请求、响应){ //按搜索词中的首字母匹配 var m
- 伦敦
- 博洛尼亚
- 巴塞罗那
来源:函数(请求、响应){
//按搜索词中的首字母匹配
var matcher=newregexp(“^”+$.ui.autocomplete.escapeRegex(request.term),“i”);
响应(select.children(“option”).map(函数(){
var text=$(this.text();
if(this.value&(!request.term | | matcher.test(text)))
返回{
标签:text.replace(
新正则表达式(
(?![^&;]+;)(?!)(?![^&;]+;),“gi”
)“$1”,
值:文本,
选项:这个
};
}) );
},
jqueryui自动完成的解决方案
$(文档).ready(函数(){
//我的源代码是html
var source=['Adam','Benjamin','Matt','Michael','Sam','Tim'];
$(“输入”)。自动完成({
来源:功能(请求、响应){
var term=$.ui.autocomplete.escapeRegex(request.term)
,startsWithMatcher=newregexp(“^”+术语“i”)
,startsWith=$.grep(源,函数(值){
返回startsWithMatcher.test(value.label | | value.value | | value);
})
,containsMatcher=newregexp(术语“i”)
,contains=$.grep(源,函数(值){
返回$.inArray(值,startsWith)<0&&
容器匹配器测试(value.label | | value.value | | value);
});
响应(startsWith.concat(contains));
}
});
});
任何可能的反馈都将不胜感激
谢谢。我可以通过添加以下内容来实现此功能:
source: function (request, response) {
var matcher = $.ui.autocomplete.escapeRegex(request.term),
startsWithMatcher = new RegExp("^" + matcher, "i"),
startsWith = $.grep(select.children("option"), function(value) {
return startsWithMatcher.test(value.label || value.value || value);
}),
containsMatcher = new RegExp(matcher, "i"),
contains = $.grep(select.children("option"), function (value) {
return $.inArray(value, startsWith) < 0 &&
containsMatcher.test(value.label || value.value || value);
});
response(startsWith.concat(contains).map(function(option) {
var text = $(option).text();
var val = $(option).val();
return {
label: text,
value: val,
option: $(option)
};
}));
}
我可以通过添加以下内容来实现这一点:
source: function (request, response) {
var matcher = $.ui.autocomplete.escapeRegex(request.term),
startsWithMatcher = new RegExp("^" + matcher, "i"),
startsWith = $.grep(select.children("option"), function(value) {
return startsWithMatcher.test(value.label || value.value || value);
}),
containsMatcher = new RegExp(matcher, "i"),
contains = $.grep(select.children("option"), function (value) {
return $.inArray(value, startsWith) < 0 &&
containsMatcher.test(value.label || value.value || value);
});
response(startsWith.concat(contains).map(function(option) {
var text = $(option).text();
var val = $(option).val();
return {
label: text,
value: val,
option: $(option)
};
}));
}