2013-06-26 8 views
16

मैं सर्वर से कुछ डेटा प्रदर्शित करने के लिए चहचहाना बूटस्ट्रैप Typeahead उपयोग करते हैं, समस्या यह है जब उपयोगकर्ता एक पत्र Typeahead सर्वर पर एक ajax फोन करेगा और यह 2 कर देगा जब मैं तेजी से 2 या 3 अक्षरों में टाइप करने की कोशिश या 3 ajax सर्वर से कहता है, वहाँ उपयोगकर्ता पत्र लिख रहा है सर्वर से केवल एक ajax कॉल करने के लिए जब एक देरी बनाने के लिए एक संभावना हैट्विटर बूटस्ट्रैप Typeahead देरी

पल में मेरी कोड:

$('#SEARCH-INPUT').typeahead({ 
          source: function (query, process) { 

           jQuery.ajax({ 
            type: "GET", 
            url: "/organisations/search", 
            data: {search_name: $("#SEARCH-INPUT").val()}, 
            beforeSend: function(){ 
             $("#SEARCH-LOADING").show(); 
            }, 
            success: function (data) { 
             organisations = []; 
             organisations_hash = {}; 
             $.each(data, function(i, item){ 
             organisations_hash[item.name.toUpperCase()] = item.id; 
             organisations.push(item.name); 

             }); 
             organisations.sort(); 

             $("#SEARCH-LOADING").addClass("hidden"); 
             process(organisations); 
            }, 
            error: function(){ alert("error");}, 
            async: false 
            }); 
          } 
          ,updater: function (item) { 
           $("#SEARCH-INPUT").val(item); 
           $("#SEARCH-BUTTON").click(); 
           return item; 
          } 
          ,items: 9 
          ,minLength: 1 
         }); 

उत्तर

35

उपयोग इस समाधान:

(function() { 
    var timeout; 

    $('[name="fill"]').typeahead({ 
     source: function(value) { 
      if (timeout) { 
       clearTimeout(timeout); 
      } 

      timeout = setTimeout(function() { 
       alert(value); 
      }, 300); 
     } 
    }); 
})(); 
,210

कार्रवाई में देखें:

http://jsfiddle.net/nnPVn/

setTimeout और clearTime ठीक काम करता है!

+0

धन्यवाद, पूरी तरह से काम करता है – Maki

+1

यह एक दोष है - यदि आपके पास एक मिनी लम्बाई सेट है, तो जब आप जल्दी से प्रवेश किए गए टेक्स्ट के माध्यम से बैकस्पेस करते हैं और इनपुट साफ़ करते हैं, तो टाइमआउट स्टिल फायरिंग समाप्त होता है। मैं उम्मीद होती है ना ... इस उदाहरण देखने के लिए: http://jsfiddle.net/nnPVn/16/ –

+0

सवाल इसके बाद के संस्करण इस समस्या का कारण MINLENGTH 1 (डिफ़ॉल्ट) है नहीं है। – MrBoolean

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