jQuery自动完成,匹配无序的多个单词

时间:2014-09-11 10:04:34

标签: jquery-ui jquery-ui-autocomplete

我正在使用此版本进行jQuery自动填充,其中我有一个单词列表:

http://jsfiddle.net/K6Dt2/7/

$(function () {
var availableTags = [
    "hello world", "foo bar", "bar foo world", "hello", "bar"
];
function customFilter(array, terms) {
    arrayOfTerms = terms.split(" ");
    var term = $.map(arrayOfTerms, function (tm) {
         return $.ui.autocomplete.escapeRegex(tm);
    }).join('|');
   var matcher = new RegExp("\\b" + term, "i");
    return $.grep(array, function (value) {
       return matcher.test(value.label || value.value || value);
    });
};
$("#tags").autocomplete({
    source: availableTags,
    multiple: false,
    mustMatch: false
    ,source: function (request, response) {
        // delegate back to autocomplete, but extract the last term
        response(customFilter(
        availableTags, request.term));
    },
});
});
  

“hello world”,“foo bar”,“bar foo world”,“hello”,“bar”

我的问题是,在输入“world hello”时,我只想显示“hello world”。

同样,当我输入空格时,显示的所有选项在我的情况下都是不正确的。

我该如何实现这种行为?

谢谢

1 个答案:

答案 0 :(得分:1)

忘记突出显示,您可以尝试迭代地为您的数组选择分割术语

function customFilter(array, terms) {
    arrayOfTerms = terms.split(" ");

    arrayOfTerms.forEach(function (entry) {
        array = $.grep(array, function (e) {
            return e.indexOf(entry) >= 0;
        })
    });

    return array;
}