7

다음 JS를 살펴 걸릴 경우 (라이브 : http://jsfiddle.net/RyanWalters/dE6T3/2/) 나는 자동 완성이 projects 배열의 value, descicon 필드를 검색 할 수 있도록하기 위해 노력하고있어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

을 그냥 "matcher.test (value.value)을 반환 할 수 없습니다 || matcher.test (value.desc를) || matcher.test (value.icon를) ; " ? – dinjas

답변

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

이 (항상 value.value 예정) 값 "thuthy"1로 값을 설정합니다.

이 같은 것을보십시오 :

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

매력처럼 작동했습니다. 감사합니다. – Ryan

+0

@ 라이언 : 천만에 :-) –