结合jQuery UI自动完成源

时间:2013-03-02 21:35:38

标签: jquery jquery-ui jquery-autocomplete jquery-ui-autocomplete

我已经使用以下源标记实现了我喜欢的功能:

source: function (request, response) {
                 // delegate back to autocomplete, but extract the last term
                 response($.ui.autocomplete.filter(availableTags, extractLast(request.term)));
             },

我使用以下源标记实现了新功能:

source: function (request, response) {
                // Using a custom source callback to match only the beginning of terms
                var matcher = new RegExp("^" + $.ui.autocomplete.escapeRegex(request.term), "i");
                response($.grep(availableTags, function (item) {
                    return matcher.test(item);
                }));
            }

如何组合这两个源标签,以便我可以拥有两者的功能?

1 个答案:

答案 0 :(得分:1)

我认为你正在寻找类似的东西(只需将extractLast的结果传递给正则表达式而不是整个术语):

source: function (request, response) {
    var term = extractLast(request.term),
        matcher = new RegExp("^" + $.ui.autocomplete.escapeRegex(term), "i");

    response($.grep(availableTags, function (item) {
        return matcher.test(item);
    }));
}

示例: http://jsfiddle.net/Aa5nK/6/

两者在做什么:

  • 第一个是根据用户输入的最后一项(由,描绘)
  • 过滤自动填充术语
  • 第二个是根据用户输入的字词创建regular expression^表示“以...开头”,后跟一个实用程序函数,用于删除该术语中的任何特殊字符,最后是i参数,该参数使正则表达式不区分大小写。
  • 组合它们只需要提取最后一个术语(使用extractLast,然后根据该术语创建正则表达式。