jQuery UI自动完成:在本地json数组中搜索不仅仅是"label"

Bri*_*ian 10 jquery autocomplete

*故事:

我有一个有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');
 }
      });
    });
 });
Run Code Online (Sandbox Code Playgroud)

我知道我们可以在远程数据上使用PHP来实现这个结果,但是我需要使用本地数组来加速搜索,因为我在每个学校里都有很多课程.

由于我是一个新手代码并且堆栈现在功能齐全,因此快速修复将是理想的选择.谢谢大家的帮助!

Ger*_*umm 22

您可以通过提供source回调来实现.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);
    }));
}
Run Code Online (Sandbox Code Playgroud)

这是一个小提琴:http://jsfiddle.net/h5E6C/