*故事:
我有一个包含2个搜索栏的网站,用户可以通过jQuery自动完成功能搜索学校,然后搜索该学校内的课程。我的所有数据都在LOCAL json数组中,例如:
var schools = [{“label”:波士顿大学,“价值”:波士顿大学,“昵称”:BU}]
*问题:
搜索时,我想将用户的输入不仅与“标签”匹配,还要与“昵称”相匹配,以便学校可以通过“波士顿大学”和“BU”进行搜索。这是我现在的代码:
$(document).ready(function(){
$("#school").autocomplete({
appendTo: ".custom-autocomplete",
source: schools,
minLength: 0,
select: function( event, ui ) {
$("#class").autocomplete({
appendTo: ".custom-autocomplete",
source: courses,
minLength: 2,
select: function( event, ui ) {
$('#submit_header_form').attr('class','submit_header_form');
}
});
});
});
我知道我们可以在远程数据上使用PHP来实现这个结果,但我需要使用本地数组来加速搜索,因为我在每所学校都有很多课程。
由于我是一个新手代码并且堆栈现在功能齐全,因此快速修复将是理想的选择。谢谢大家的帮助!
答案 0 :(得分:22)
您可以通过提供source
作为回调来实现。有一个example on jQuery UI网站,但您可以修改标准实施。
source: function (request, response) {
var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i");
response($.grep(schools, function(value) {
return matcher.test(value.value)
|| matcher.test(value.nickname);
}));
}
这是一个小提琴:http://jsfiddle.net/h5E6C/