7

आप निम्नलिखित जे एस पर एक नज़र डालें, तो:jQuery यूआई: स्वतः पूर्ण - मैं सरणी के भीतर कई मान कैसे खोजूं?

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

मैं स्वत: पूर्ण projects सरणी में value, desc, और icon फ़ील्ड की खोज करने के लिए कोशिश कर रहा हूँ: (http://jsfiddle.net/RyanWalters/dE6T3/2/ लाइव)। हालांकि, जब मैं खोज बॉक्स में मान दर्ज करता हूं, तो मैं केवल value फ़ील्ड खोज सकता हूं। desc और icon फ़ील्ड पूरी तरह से अनदेखा हो जाते हैं।

मैं इसे कैसे बना सकता हूं ताकि मैं किसी भी तीन फ़ील्ड में टेक्स्ट खोज सकूं?

+3

|| matcher.test (value.desc) || ​​matcher.test (value.icon):

कुछ इस तरह की कोशिश करो , " ? – dinjas

उत्तर

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

यह 1 "thuthy" मूल्य (जो हमेशा value.value हो जाएगा) के लिए मूल्य तय करेंगे। आप बस "वापस नहीं कर सकता matcher.test (value.value)

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

एक आकर्षण की तरह काम किया, धन्यवाद! – Ryan

+0

@ रयान: आपका स्वागत है :-) –

संबंधित मुद्दे