2014-09-11 80 views
0

在那裏我有一個單詞列表我使用這個版本的jQuery的自動完成: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)); 
    }, 
}); 
}); 

「世界你好」,「富巴」 ,「bar foo world」,「hello」,「bar」

我的問題是,例如在輸入「world hello」時,我想只顯示「hello world」。

此外,當我鍵入一個空格,所有選項都顯示在我的情況是不正確的。

我該如何實現這種行爲?

謝謝

回答

1

不忘強調,你可以嘗試反覆grepping您的陣列劈裂方面

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

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

    return array; 
}