2012-02-29 17 views
48

पर श्रोता जोड़ें, मैं बूटस्ट्रैप ट्विटर ढांचे में नया हूं, और मुझे स्वत: पूर्ण के लिए बूटस्ट्रैप-typeahead.js का उपयोग करने की आवश्यकता है, लेकिन मुझे उपयोगकर्ता द्वारा चुने गए मान को भी प्राप्त करने की आवश्यकता है Typeahead।बूटस्ट्रैप-typeahead.js चुनिंदा ईवेंट

यह मेरा कोड है:

<input type="text" class="span3" style="margin: 0 auto;" 
        data-provide="typeahead" data- items="4" 
        data-source='["Alabama","Alaska"]'> 

मैं कैसे प्रकार Typeahead से चयनित मूल्य मिलता है और एक समारोह में इसे पारित करने के एक श्रोता जोड़ सकते हैं? उदाहरण के लिए जब मैं ExtJs का उपयोग करता हूं, तो मैं इस संरचना को लागू करता हूं:

listeners: { 
    select: function(value){ 
    ........ 
    } 
} 

मैं टाइपहेड के साथ कुछ कैसे कर सकता हूं?

उत्तर

0

this fork of typeahead आज़माएं। यह आपको एक अचयनित घटना, असीमित आबादी और अधिक देता है!

+1

Typeahead अब 'afterSelect', मेरा उत्तर देखना –

165

आप का उपयोग करना चाहिए "अपडेटर":

$('#search-box').typeahead({ 

    source: ["foo", "bar"], 

    updater:function (item) { 

     //item = selected item 
     //do your stuff. 

     //dont forget to return the item to reflect them into input 
     return item; 
    } 
}); 
+1

यह रेटेड -1 क्यों है? मैंने टाइपहेड के कई कांटे की कोशिश की है और कुछ भी काम नहीं किया है। यह समाधान तुरंत काम किया ... – gpasse

+7

यह एक सही जवाब है।आश्चर्य है कि यह ट्विटर बूटस्ट्रैप दस्तावेज़ों में क्यों प्रलेखित नहीं है। –

+2

हाँ, यह 2.1 संस्करण के साथ काम कर रहा है। – egis

4

मैं बस तत्व पर "परिवर्तन" घटना, चयन पर जो ट्विटर बूटस्ट्रैप Typeahead आग को देख कर यह काम कर पाने के लिए कर लिया है।

var onChange = function(event) { 
    console.log "Changed: " + event.target.value 
}; 

$('input.typeahead').typeahead({ source: ['test1', 'test2'] }); 
$('input.typeahead').on('change', onChange); 

आउटपुट 'परिवर्तित: test1' जब उपयोगकर्ता test1 का चयन करता है।

नोट: यह तब भी ईवेंट को सक्रिय करता है जब उपयोगकर्ता "एंटर" दबाता है, भले ही कोई मिलान न हो, तो आपको यह तय करना होगा कि आप यही चाहते हैं या नहीं। विशेष रूप से, यदि उपयोगकर्ता "ते" में प्रवेश करता है और फिर "test1" पर क्लिक करता है, तो आपको "te" और "test1" के लिए एक ईवेंट मिलेगा, जिसे आप डिबॉन्स करना चाहते हैं।

(संस्करण 2.0.2 ट्विटर बूटस्ट्रैप Typeahead)

51

v3 चहचहाना में बूटस्ट्रैप Typeahead एक चहचहाना Typeahead के साथ बदल दिया (जो सुविधा है गिरा दिया जाएगा (अधिक घटनाओं आप Typeahead प्रोटोटाइप संरचना जानने की आवश्यकता जोड़ने के लिए) आप करना चाहते हैं और एक बहुत अधिक)

https://github.com/twitter/typeahead.js

उपयोग इस तरह: आपके उत्तर के लिए

jQuery('#autocomplete-input').on('typeahead:selected', function (e, datum) { 
    console.log(datum); 
}); 
+0

लेकिन मैं टाइपहेड का उपयोग कैसे करूं: चयनित? – adamnyberg

+3

क्या यह अद्यतन मदद करता है? –

+3

मैं @ .on ('टाइपहेड: चयनित टाइपहेड: स्वतः पूर्ण' ... का उपयोग करने का सुझाव देता हूं, जब कोई उपयोगकर्ता टैब कुंजी दबाता है तो स्वत: पूर्णता को कैप्चर करने के लिए, जैसा कि नीचे @ फिलिपिनेव के उत्तर में उल्लिखित है। –

17

धन्यवाद P.scheit। मुझे इसे अपने समाधान में जोड़ें जो उपयोगकर्ता टैब कुंजी दबाते समय स्वत: पूर्णता को संभालता है।

jQuery('#autocomplete-input').on('typeahead:selected', function (e, datum) { 
    console.log(datum); 
}).on('typeahead:autocompleted', function (e, datum) { 
    console.log(datum); 
}); 
+0

मुझे नहीं लगता कि हमें अलग की आवश्यकता है कार्यों मैं नीचे एक संशोधित संस्करण दे दिया है, प्रारंभिक निवेश के लिए धन्यवाद .. – Abs

0
$('input.typeahead').typeahead({ 
    source: ['test1', 'test2'], 
    itemSelected: function(e){ 
     ---your code here--- 
    } 
}); 
+0

कृपया अपने कोड की व्याख्या –

+0

// ट्विटर बूटस्ट्रैप Typeahead प्लगइन // v1.2.2 // https://github.com/tcrosen/twitter-bootstrap -typeahead –

15

आप afterSelect

$('#someinput').typeahead({ 
    source: ['test1', 'test2'], 
    afterSelect: function (item) { 
     // do what is needed with item 
     //and then, for example ,focus on some other control 
     $("#someelementID").focus(); 
    } 
}); 
+1

धन्यवाद आदमी! पूरी तरह से काम किया। – brunoramonalmeida

1

यहाँ के लिए टैब किए गए और चयनित पर बहु ​​घटना के साथ समाधान का उपयोग कर सकते हैं:

$('#remote .typeahead').on(
    { 
     'typeahead:selected': function(e, datum) { 
      console.log(datum); 
      console.log('selected'); 
     }, 
     'typeahead:autocompleted': function(e, datum) { 
      console.log(datum); 
      console.log('tabbed'); 
     } 
}); 
संबंधित मुद्दे