2013-05-13 6 views
5

ट्विटर्स Typeahead वाक्यांश में कहीं भी किसी भी शब्द से मेल खाता है ताकि "कार" परिणामों की खोज के लिए "कार" से मेल खाने वाले दूसरे शब्द के साथ एक वाक्यांश से आ सकता है। उदाहरण के लिए जब व्यापार कार्ड के साथ सूची में कार की खोज होती है। व्यापार कार्ड प्रकट होता है और कार से पहले यह भी बदतर होता है। आईई:ट्विटर टाइपहेड सटीक मिलान शब्द और वाक्यांश कैसे बनाएं

Search Term: Car 
Suggestions: 
Business Card 
Car 
Car Pool 
Carbon 

मैं इसे और अधिक गूगल और की तरह जहां लिखे गए शब्द सबसे अधिक प्रासंगिक है (वे कभी नहीं कुछ है कि मिलान नहीं किया गया है कि वास्तव में क्या शुरू से ही लिखा गया सुझाव है) चहचहाना होना चाहते हैं, तो कार होगी बिजनेस कार्ड की तुलना में कार टाइप करते समय अधिक प्रासंगिक।

मैं चाहता हूं कि वास्तव में केवल दूसरे शब्द से मेल खाना बंद करें जब तक कोई कोई स्थान टाइप न करे और दूसरा शब्द शुरू न करे। इसलिए उपरोक्त उदाहरण व्यवसाय कार्ड में सूची में प्रकट नहीं होता जब तक कि मैं आपके द्वारा लिखा गया:

Business C 

मैं मिलान और शब्द है कि टाइप खोज की शुरुआत से सटीक मेल नहीं कर रहे हैं सुझाव देने के इस व्यवहार करना बंद कर सकते हैं।

यह कहने का एक और तरीका यह होगा कि टाइपहेड को टोकनिंग या स्पेस पर विभाजित करने से कैसे रोकें। टाइपहेड हमेशा एक शब्द (^) की शुरुआत से मेल खाता है, इसलिए यदि अंतरिक्ष शब्द सीमा के रूप में पहचाना नहीं गया था तो यह Google और twitters उपयोगकर्ताओं की अपेक्षा करेगा जितना अधिक काम करेगा।

किसी भी मदद के लिए धन्यवाद, टायलर

अद्यतन 1.

मैं डाटुम अपना महत्व होता है और कर लेंगे ताकि Typeahead _transformDatum पद्धति पर विभाजित करके टोकन tokenize यह नहीं है कि वापस जाने के लिए मेरी डेटासेट अद्यतन एक स्थान। यह अच्छा काम करता है और अब यह रूप में वांछित काम करता है:

मान: एप्पल, विशाल वानरों

खोज शब्द: Ap सुझाव: एप्पल

यह है कि मैं क्या चाहता हूँ। लेकिन अब एक नया मुद्दा है।

समस्या: किसी स्थान के साथ खोज शब्द का उपयोग करते समय कोई सुझाव नहीं लौटाया जाता है। महान (एक स्थान के साथ) सुझाव::

तो अब जब मैं टाइप "महान" सुझाव जैसे ही मैं एक अंतरिक्ष .:

खोज शब्द लिखें रोक (कोई नहीं)

मैं मैं सोच रहा हूं कि टोकन में रिक्त स्थान नहीं हो सकते हैं। हालांकि प्रलेखन स्पष्ट रूप से एक मुद्दा में यह कहना नहीं करता है:

एक गृहीत के विहित प्रपत्र एक मूल्य के संपत्ति के साथ एक वस्तु है और एक संपत्ति टोकन। मूल्य स्ट्रिंग है जो अंतर्निहित डेटाम और टोकन का मान स्ट्रिंग का संग्रह है जो किसी दिए गए क्वेरी के साथ मिलान करने वाले डेटाम में typeahead.js की सहायता करता है।

+0

मैं अंतरिक्ष मुद्दा संपादन विधि 'getSuggestion' (समाधान कर लिया है https://github.com/twitter/typeahead .js/ब्लॉब/मास्टर/src/dataset.js # L251)। मैंने 'tokenizeQuery' पर कॉल को हटा दिया है, केवल क्वेरी में 'toLowerCase() 'लागू किया है। – franzlorenzon

उत्तर

1

आप कर सकते हैं

$('.typeahead').typeahead({source:myarray, matcher: function(item){ 
    var reg = new RegExp('^'+this.query); 
    if(item.match(reg)) return true; 
    else return false; 
}}) 
+0

प्रतिक्रिया के लिए धन्यवाद और मुझे खेद है कि मैंने बेहतर स्पष्टीकरण नहीं दिया लेकिन यह ट्विटर का Typeahead.js बूटस्ट्रैप से जुड़ा नहीं है। मैंने अपनी पोस्ट को स्पष्टीकरण के लिए अपडेट किया। –

1

उपयुक्त होगा:

matcher: function (item) { 
     if (item.toLowerCase().indexOf(this.query.trim().toLowerCase()) == 0) { 
      return true; 
     } 
    }, 
+0

आपका उत्तर ट्विटर बूटस्ट्रैप v2 के साथ वितरित टाइपहेड के बारे में है (बूटस्ट्रैप v3 में कोई टाइपहेड नहीं है)। प्रश्न ट्विटर टाइपहेड, एक अलग उत्पाद के बारे में है। – jrochkind

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