7

如果你看看下面的JS:(實況:http://jsfiddle.net/RyanWalters/dE6T3/2/jQuery UI:自動完成 - 如何搜索數組中的多個值?

var projects = [ 
    { 
     value: "jquery", 
     label: "jQuery", 
     desc: "the write less, do more, JavaScript library", 
     icon: "jquery_32x32.png" 
    }, 
    { 
     value: "jquery-ui", 
     label: "jQuery UI", 
     desc: "the official user interface library for jQuery", 
     icon: "jqueryui_32x32.png" 
    }, 
    { 
     value: "sizzlejs", 
     label: "Sizzle JS", 
     desc: "a pure-JavaScript CSS selector engine", 
     icon: "sizzlejs_32x32.png" 
    } 
]; 


$("#autocomplete").autocomplete({ 
    source: function(request, response){ 
     var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i"); 
     response($.grep(projects, function(value) { 
      value = value.value || value.desc || value.icon; 
      return matcher.test(value); 
     })); 
    } 
}); 

我試圖讓自動完成搜索valuedesc,並且icon領域projects陣列英寸但是,當我在搜索框中輸入值時,我只能搜索value字段。 descicon字段被完全忽略。

我該如何使它能夠在三個字段中的任何一箇中搜索文本?

+3

不能你只是「迴歸matcher.test(value.value)|| matcher.test(value.desc)|| matcher.test(value.icon) ;」 ? – dinjas 2012-04-02 16:45:23

回答

11
value = value.value || value.desc || value.icon; 

這將設置值到第一「thuthy」值(其將總是value.value)。

嘗試是這樣的:

response($.grep(projects, function(value) { 
    return matcher.test(value.value) || matcher.test(value.desc) || matcher.test(value.icon); 
})); 
+1

像魅力一樣工作,謝謝! – Ryan 2012-04-02 17:44:00

+0

@Ryan:不客氣:-) – 2012-04-02 17:44:37