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

时间:2011-01-17 20:23:14

标签: 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');
 }
      });
    });
 });

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

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

1 个答案:

答案 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/