我正在尝试JQuery自动完成示例。请参阅 - http://jsfiddle.net/LCv8L/797/
当我输入“Ar”时,它应首先给出“Ar”相关项目。但是,尽管我已经给出minLength
,但它首先显示“An”。可能是它正在考虑按字母顺序排列。有什么建议可以解决这个问题吗?
minLength: 1,
select: function(event, ui) {
event.preventDefault();
$("#customer-search").val(ui.item.label);
$("#selected-customer").val(ui.item.label);
},
focus: function(event, ui) {
event.preventDefault();
$("#customer-search").val(ui.item.label);
}
});
答案 0 :(得分:1)
默认情况下,自动填充包含字符串的搜索项,而不是以。
开头$('#customer-search').autocomplete({
source: function(request, response) {
var filtered = $.map(data, function(item) {
if(item.value.toLowerCase().startsWith(request.term.toLowerCase())) {
return item;
}
else {
return null;
}
});
response(filtered);
}
});
答案 1 :(得分:1)
尝试在" search"中更改名称空间中的正则表达式方法
请在jsfiddle.net/LCv8L/800 /
中找到答案答案 2 :(得分:1)
在jsfiddle中运行此代码 它正在按你的意愿工作.. :) //使用正则表达式是防止这种情况的更好方法。
var wordlist= [
"Afghanistan",
"Albania",
"Algeria",
"American Samoa",
"Andorra",
"Angola",
"Anguilla",
"Antarctica",
"Antigua and Barbuda",
"Argentina",
"Armenia",
"Aruba",
"Australia",
"Austria",
"Azerbaijan"
] ;
$("#customer-search").autocomplete({
source: function(req, responseFn) {
var re = $.ui.autocomplete.escapeRegex(req.term);
var matcher = new RegExp( "^" + re, "i" );
var a = $.grep( wordlist, function(item,index){
return matcher.test(item);
});
responseFn( a );
}
});