7

次のJSを見てとる場合:(ライブ:http://jsfiddle.net/RyanWalters/dE6T3/2/)私はオートコンプリートがprojects配列にvaluedesc、およびiconフィールドを検索しようとしてい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); 
     })); 
    } 
}); 

を。ただし、検索ボックスに値を入力すると、valueフィールドのみを検索できます。 desciconフィールドは完全に無視されます。

3つのフィールドのいずれかでテキストを検索できるようにするにはどうすればよいですか?

+3

は、あなただけの「matcher.test(value.value)|| matcher.test(value.desc)|| matcher.test(value.icon)を返すことができませんでした; " ? – dinjas

答えて

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

これは(常にvalue.valueになります)値「thuthy」第一に値を設定します。

このような何かを試してみてください:

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

感謝のように働いた、ありがとう! – Ryan

+0

@ Ryan:ようこそ:-) –

関連する問題