10

जब मैं इन विशेषताओं को दूरट्विटर बूटस्ट्रैप के Typeahead की एक इनपुट पर ध्यान केंद्रित सेट करने में असमर्थ

$(document).ready(function() { 
    $('.first').focus(); 
}); 

यह इस के लिए मेरे HTML मार्कअप है:

<div class="itemx"> 
    <input type="text" class="input-large first" autocomplete="off" placeholder="Equipment Name/Label" name="equip[]" data-source="<?=str_replace('"', '&quot;', json_encode($equipment, JSON_HEX_TAG | JSON_HEX_APOS)); ?>" data-items="4" data-provide="typeahead" /> 
    <input type="text" class="input-large second" placeholder="Quantity" name="quant[]" /> 
</div> 

नोट: Typeahead अच्छी तरह से काम करता है एक यह यह गलत w कुछ भी नहीं है यह:

data-source="<?=str_replace('"', '&quot;', json_encode($equipment, JSON_HEX_TAG | JSON_HEX_APOS)); ?>" 

उत्तर

0

शायद इनपुट छिपा हुआ है।

$('input:visible').focus(); 
2

टाइपहेड सक्रिय रूप से डिफ़ॉल्ट फोकस ईवेंट को अवरुद्ध कर रहा है। मुझे यकीन नहीं है कि क्यों (शायद एक उपयोग केस है जहां फोकस टाइपहेड तोड़ता है, मैंने इसे नहीं देखा है)।

typeahead.js source में (अंत लाइनों 321 करने के लिए 316 पर):

$(document).on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) { 
    var $this = $(this) 
    if ($this.data('typeahead')) return 
    e.preventDefault() 
    $this.typeahead($this.data()) 
    }) 

को बदलें:

$(document).on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) { 
    var $this = $(this) 
    if ($this.data('typeahead')) return true 
    $this.typeahead($this.data()) 
    }) 

सच रिटर्निंग फोकस घटना को पूरा करने के (केवल पहला फोकस जब बाद इस चलाता है की अनुमति देता है टाइपहेड स्थापित है) और e.preventDefault() कॉल को हटाने से प्रारंभिक सेटअप पर आग लगने की अनुमति मिलती है।

मेरे पास परिवर्तन के लिए pull request है - लेखकों की प्रतिक्रिया के साथ उत्तर अपडेट करेगा।

8

मुझे हाल ही में यह समस्या थी। यह स्वयं तय हुआ जब मैंने .typeahead() कोड ब्लॉक पहले घोषित किया, और फिर फ़ील्ड फोकस दिया। अगर मैंने ऑर्डर को उलट दिया, तो .typeahead() कार्यक्षमता टूट गई।

$('#myField').typeahead({ 
    ... 
}); 

$('#myField').focus(); 
+1

+1 यह काम करता है। एचटीएमएल 5 'इनपुट ... ऑटोफोकस> का उपयोग करना भी काम करता है। –

+0

कभी नहीं। मैं टाइपहेड के साथ इनपुट तत्व पर ऑटोफोकस विशेषता का कभी भी उपयोग नहीं करता हूं। यह हर जगह काम करेगा लेकिन आईफोन पर नहीं। और आप सचमुच अपने बालों को खींच लेंगे! – Abhishek

0

यह कौन सा संस्करण उपयोग कर रहे हैं पर निर्भर करता है, मैं 0.9.3 में इस मुद्दे से टकरा गई।

नहीं

साफ, लेकिन आप एक समय समाप्ति सेट करने का प्रयास कर सकते हैं:

setTimeout (function() {। $ ('। पहले') ध्यान केंद्रित();}, 0);

0

टाइपहेड.जेएस 0.10.2 का उपयोग करना ईविल क्लोजेट बंदर द्वारा निर्दिष्ट समाधान लगभग मेरे लिए काम करता है। जैसा कि निर्दिष्ट है, आपको "टाइपहेड" पर कॉल के बाद फोकस सेट करना होगा, लेकिन ध्यान रखें कि "टाइपहेड" आमंत्रण डीओएम में हेरफेर करेगा और अतिरिक्त तत्व जोड़ देगा। "टाइपहेड" को कॉल करने के बाद, अपने इनपुट बॉक्स का प्रतिनिधित्व करने वाले तत्व का पता लगाएं और उस पर फ़ोकस सेट करें। जैसा कि नीचे दिखाया गया है, इनपुट तत्व में कक्षा "टीटी-इनपुट" है।

उदाहरण:

एचटीएमएल:

<div id="levelSearchBox" style="clear: both"> 
    <input class="typeahead" type="text" placeholder="Search" data-bind="value: selectedRootLevel" /> 
</div> 

js: यह ध्यान देने के विधि के अपने संस्करण है

$('#levelSearchBox .typeahead').typeahead({ 
     hint: true, 
     highlight: true, 
     minLength: 0, 
     autoselect: true 
    }, { 
     displayKey: 'name', 
     source: levels.ttAdapter() 
    }).on('typeahead:selected', function ($e, datum) { 
     selectedCallBack(datum["name"]); 
    }); 

    $('#levelSearchBox .tt-input').focus(); 
4

Typeahead है। फोकस इवेंट से डिफ़ॉल्ट व्यवहार को रोका जाता है, इसलिए टाइपहेड संदर्भ रखने का एकमात्र तरीका है।

var typeaheadReference = $('.typeahead').typeahead({ ... }; 

तो तुम सिर्फ typeaheadReference.focus();

+0

टाइपहेड का फोकस काम करता है! लेकिन डिफ़ॉल्ट 'फोकस()' भी काम करता है ... –

0

मैं लोगों को जल्दी से पुस्तकालय http://jsfiddle.net/uryUP/

मैं अपने एक और कोड एहसास हुआ की संस्करण का परीक्षण करने के लिए एक jsfiddle बनाया कॉल के कारण मेरी इनपुट बॉक्स को अक्षम करने गया था विफल ध्यान देते हैं, लेकिन यह मुझे एहसास यह मेरे कोड और न पुस्तकालय था मदद की

$('#locationSearchText').typeahead({ 
      minLength: 1, 
      highlight: true 
     }, 
     { 
      source: function (query, process) { 
       return process([{value:'abcdefg'}]); 
      } 
     }); 

$('#locationSearchText').focus().typeahead('val', 'abc'); 
1

मुझसे पूछें मत क्यों, लेकिन यह केवल बात यह है कि मेरे लिए काम किया है:

setTimeout("$('[name=search_input]').focus();", 0) 
0

मैं ध्यान केंद्रित करने के बजाय क्लिक करें घटना का उपयोग कर अंत और यह मेरे लिए काम करता है।

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