2010-11-30 10 views
6

यह केवल अजीब चीज है। मुझे एक सैमी.जेएस ऐप मिला है, और मैं HTML लोड के ठीक बाद टेक्स्ट फ़ील्ड पर फ़ोकस सेट करना चाहता हूं। मैं इस CoffeeScript यहाँ मिल गया है:टेक्स्ट फ़ील्ड पर फोकस() सेट नहीं कर सकता

this.partial('templates/my-template.jqt').then -> 
    i = $('#item') 
    debugger 
    i.focus() 

मैं डिबगर में हूँ, है ना कि लाइन पर है, मैं निरीक्षण कर सकते हैं "मैं" और देखते हैं कि यह एक JQuery वस्तु है। मैं i.val ("HI यहां!") भी कॉल कर सकता हूं और अपना टेक्स्ट फ़ील्ड अपडेट देख सकता हूं। लेकिन, i.focus() को कॉल करना बिल्कुल कुछ नहीं करता है। क्या कोई सुरक्षा सुविधा है जो मुझे याद आ रही है जो आपको टेक्स्ट तत्व पर ध्यान केंद्रित नहीं करने देती है जो गतिशील रूप से लोड की गई थी?

+0

कॉफीस्क्रिप्ट ftw – drozzy

+0

बीटीडब्ल्यू, आप कैसे जानते हैं कि आप "आंशिक" पर क्या कर सकते हैं? मैं नहीं कर सकता, मेरे जीवन के लिए, यह पता लगाएं कि "आंशिक" विधि Sammy.js api दस्तावेज़ों से क्या लौटाती है। आप उस सामान को कैसे समझते हैं? – drozzy

उत्तर

0

यदि आप सुनिश्चित हैं कि आपको $('#item') ऑब्जेक्ट मिल रहा है। आप कुछ चीजों को आजमा सकते हैं।

सुनिश्चित करें कि आपके पास <input type="text" id="item" /> के साथ केवल एक इनपुट बॉक्स है। उसी आईडी को दोहराया नहीं जाना चाहिए।

अगला बात यह है कि आप $('#item').focus() क्यों नहीं देखते हैं।

धन्यवाद। संबंध ,

वसीम

2

JQuery का ध्यान() एक तत्व पर ध्यान केंद्रित नहीं है, यह ध्यान केंद्रित करने के लिए एक ईवेंट हैंडलर बांधता है। http://api.jquery.com/focus/

i.get()। इसके बजाय फोकस() का प्रयास करें।

+0

असल में, जब मैं $ ('इनपुट [प्रकार = टेक्स्ट]') करता हूं। फोकस(), यह क्रोम में काम करता है, लेकिन आईओएस नहीं। यहां वास्तविक फ़ाइल है: https://github.com/pkulak/mealfire_mobile/blob/master/coffeescripts/add_extra.coffee –

+2

जब मैं क्रोम में 'i.get()। फोकस()' कोशिश करता हूं, तो मुझे "अनकॉटेड टाइप एरर मिलता है: ऑब्जेक्ट [ऑब्जेक्ट HTMLInputElement] में कोई विधि 'फोकस' नहीं है। – LarsH

+2

इसके अलावा: "JQuery का फोकस() किसी तत्व पर ध्यान केंद्रित नहीं करता है, यह एक ईवेंट हैंडलर को ध्यान केंद्रित करने के लिए बाध्य करता है": कोई तर्क नहीं के साथ, यह किसी ईवेंट हैंडलर को बाध्य नहीं करता है; यह एक ट्रिगर करता है। – LarsH

1

इसे इस तरह कार्य करें:

i.trigger 'focus' 
4

प्रयास करें:

setTimeout(function() { $('#item').focus() }, 1); 

यह आम बात मुद्दा है। कुछ कारणों से 1 एमएमएस के लिए फोकस में देरी से यह काम करता है।

+0

क्या। । ओह। +1000 internets – glyph

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