5

पर बंद होने से typeahead.js ड्रॉपडाउन को रोकें 0 आइटम को चुनने पर बंद करने से टाइपटाइम ड्रॉपडाउन को कैसे रोक सकता है? मैंने इस तरह preventDefault का उपयोग करने का प्रयास किया है:चुनिंदा

$('#q').bind('typeahead:selected',function(obj, datum, name) { 
      ... 
      obj.preventDefault(); 
     }); 

लेकिन कोई सफलता नहीं।

संपादित करें: मैं लाइनों 217-218 typeahead_views.js से टिप्पणी की साथ Typeahead का निर्माण करके इस "ठीक" करने में कामयाब रहे है:

byClick && utils.isMsie() ? 
     utils.defer(this.dropdownView.close) : this.dropdownView.close(); 

लेकिन वहाँ स्रोत फ़ाइलों को संशोधित किए बिना एक और तरीका हो गया है?

उत्तर

0

बंद कॉलबैक पर इनपुट का ध्यान ट्रिगर करें।

$('#typeahead-input').on('typeahead:closed', function(e, d) { 
     $('#typeahead-input').focus(); 
    }); 
+0

मुझे लगता है कि यह अभी भी ड्रॉपडाउन बंद कर देता है। –

0

मैं tokenfield अंदर Typeahead पर काम कर रहा हूँ तो पहले भाग मुझे Typeahead.dropdown वस्तु है, जो अपने आप में कुछ शिकार ले लिया तक पहुँचने है।

isOpen के साथ ट्राइड करने का प्रयास किया या close कार्यों को ओवरराइट करने का प्रयास किया, अंत में मुझे यह मिला। घटनाओं के marshalling नीचे तोड़ना। आपको मूल्यों की किसी भी बचत को पुन: कार्यान्वित करना होगा, मूल रूप से Typeahead.select की पहली 3 पंक्तियां।

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

$('input[id="test"]').data('bs.tokenfield') 
    .$input.data('ttTypeahead').dropdown.trigger = function(e) {}; 

इसके अलावा इस है संभावित:

$('input[id="test"]').data('bs.tokenfield') 
    .$input.data('ttTypeahead').eventBus.trigger = function(e) {}; 
0

एक आसान तरीका:

 input.data('tt-typeahead')._selectOld = input.data('tt-typeahead')._select 
    input.data('tt-typeahead')._select = function(datum) { 
     if (false) 
     this._selectOld(datum) 
    } 
0

एक ही समस्या और (बहुत आसान) समाधान कहीं भी प्रलेखित किया जाना

प्रतीत नहीं होता था
$(document).on('typeahead:beforeclose', function(event, data) { 
    event.preventDefault() 
}) 

(यह सिर्फ डॉ को रोकता है विकास के दौरान जो बहुत उपयोगी हो सकता है, उस पर बंद होने से ओपडाउन, अगर आप केवल सीले पर बंद करना बंद करना चाहते हैं तो 'typeahead:beforeselect' का उपयोग करें)।