7

Wenn Sie einen Blick auf den folgenden JS nehmen: (Live: http://jsfiddle.net/RyanWalters/dE6T3/2/)jQuery UI: Autocomplete - Wie suche ich mehrere Werte innerhalb eines Arrays?

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); 
     })); 
    } 
}); 

Ich versuche zu machen suchen, die automatische Vervollständigung der value, desc und icon Felder in dem projects Array. Wenn ich jedoch Werte in das Suchfeld eingabe, kann ich nur das Feld value durchsuchen. Die Felder desc und icon werden vollständig ignoriert.

Wie kann ich es so einrichten, dass ich in einem der drei Felder nach Text suchen kann?

+3

konnte nicht einfach „return matcher.test (value.value) || matcher.test (value.desc) || ​​matcher.test (value.icon) " ? – dinjas

Antwort

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

Dies wird Wert auf den ersten gesetzt „thuthy“ Wert (die immer value.value sein wird).

so etwas wie dieses Versuchen:

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

Arbeitete wie ein Zauber, danke! – Ryan

+0

@Ryan: Gern geschehen :-) –

Verwandte Themen