目前我有:
$("#location").autocomplete({source: cities, minLength: 0, autoFocus: true});
问题是此插件会在给定输入中搜索任何位置的匹配项。
例如,如果我输入“Bos”,它不仅会建议以“Bos”开头的单词,还会建议中间带有“bos”的单词。
我该如何解决这个问题?
答案 0 :(得分:0)
正如@jensgram所说,你可以使用source
方法。
这样的东西在我的网络应用程序中适用于我:
$("#location").autocomplete({
source : function(request, response) {
/* cities.html?query=... should return json array words starting with query value */
$.getJSON('cities.html?query=' + request.term, function(data) {
response(data);
});
}
});
答案 1 :(得分:0)
这在jQuery Autocomplete插件中很容易,documentation回答了这个问题:
matchContains
|Boolean
|Default: false
是否比较 查看内部(即“ba”匹配“foo bar”)搜索结果。 仅在使用缓存时才重要。不要与自动填充混合。
您可能希望从jQuery UI Autocomplete切换到此功能,因为它功能更全面。
答案 2 :(得分:0)
您似乎必须使用source
选项的回调设置:
第三种变体,即回调,提供了最大的灵活性 可用于将任何数据源连接到自动完成。回调 有两个参数:
- 一个请求对象,其中包含一个名为“term”的属性 指的是文本输入中当前的值。例如,当 用户在城市字段中输入“new yo”,自动填充术语将为 等于“新哟”。
- 响应回调,它需要包含单个参数 要向用户建议的数据。应根据此过滤此数据 提供的术语,并且可以是上述任何格式 对于简单的本地数据(String-Array或Object-Array with 标签/价值/两个属性)。提供自定义时很重要 源回调以在请求期间处理错误。你必须永远 即使遇到错误也会调用响应回调。这个 确保窗口小部件始终具有正确的状态。 (source)
<强>未测试强>
$(function() {
var options = ["Foo", "Bar", "Baz", "Foobar"];
$(<selector>).autocomplete({
source: function(request, response) {
var matches = [],
term = request.term.toLowerCase(),
termLen = term.length;
for (var i = 0, j = options.length; i < j; i++) {
if (options[i].substring(0, termLen).toLowerCase() == term) {
matches.push(options[i]);
}
}
response(matches);
}
});
});