2015-06-24 7 views
5

पर इनपुट फ़ील्ड बनाने के लिए फोकस सेट करना उल्का के लिए नया और किसी भी मदद की सराहना करता है - इस के साथ संघर्ष कर रहा है। लंगर लिंक सम्मन "बनाने" सत्र प्रतिक्रियाशील चर के माध्यम से प्रपत्र क्लिक करें, फिर प्रपत्र सम्मन लंगर रद्द -Meteor.js - टेम्पलेट रिफैक्टर

{{#if creating}} 
    <form class="form-create"> 
    <input name="name" type="text" id="mainInput"> 
    <button type="submit">Submit</button> 
    <a class="cancel" href="#">Cancel</a> 
    </form> 
{{else}} 
    <a class="create" href="#">Create</a> 
    {{/if}} 

कि बस ठीक काम करता है: तो मुझे लगता है कि सशर्त तैयार की है एक टेम्पलेट है।

मेरा मुद्दा तब होता है जब प्रपत्र प्रकट होता है, मैं इनपुट (#mainInput) को फ़ोकस करने के लिए सेट करना चाहता हूं। अब इस कोड अगर मैं इसे एक बटन या कुछ और करने के लिए तार काम करेंगे (यह इनपुट सेट ध्यान केंद्रित करने की तो मैं जानता हूँ कि jQuery काम करता है - उदाहरण के लिए:

"click .focusBtn": function(e, tpl) { 

    tpl.$("#mainInput").focus(); 
    tpl.$("#mainInput").select(); //might as well select the entire thing too 

},

लेकिन, मुझे कर सकते हैं ' इस फोकस को एंकर से फ़ॉर्म में स्क्रीन रीड्रो पर 'फोकस' करने के लिए मिलता है!

मैंने सत्र चर (बनाना) कोड में इसे जोड़ने की कोशिश की है - ताकि हर बार निर्माण बदल दिया जा सके (console.log I क्रिएटिंग स्विच को सच से गलत में देखें, मैं मान्य करता हूं बनाना सच्चाई है, उस सहायक ब्लॉक से फोकस को कॉल करें, लेकिन कोई बदलाव नहीं)

0 एक

Tracker.autorun(function() { 
    var creating = Session.get('creating'); 
    console.log('Autorun is auto-running!'); 
    console.log(creating); 

    if (creating) { 
     $('#mainInput').focus(); // I tried documentbyID, etc but nothing 
    } 
}); 

मुझे पता है यह ट्रैकर के साथ कुछ हो सकता है, या हो सकता है नहीं है: इस तरह, कोई लाभ नहीं हुआ, ध्यान हासिल नहीं कर रहा है -

मैं भी सत्र वर बनाने के लिए एक ट्रैकर की कोशिश की है "हुक" मुझे पता नहीं है (मैंने टेम्पलेट प्रस्तुत करने की कोशिश की लेकिन यह केवल प्रारंभिक सृजन पर काम करता है, एक बार) मैं अब गाइड पढ़ रहा हूं, लेकिन अभी भी इसके लिए नया है और किसी भी मदद/मार्गदर्शन की सराहना की जाती है। धन्यवाद!

उत्तर

6

आप सही रास्ते पर थे, तो आप सिर्फ focus कॉल निष्पादित करने के लिए जब उल्का इनपुट के बाद Session चर अवैध था और Spacebars {{#if}} ब्लॉक सहायक पथ चुना रेंडर करने के लिए एक मौका था एक Tracker.afterFlush कॉलबैक पंजीकरण का उपयोग करने की जरूरत है।

Tracker.autorun(function() { 
    var creating = Session.get('creating'); 
    if (creating) { 
    Tracker.afterFlush(function(){ 
     $('#mainInput').focus(); 
    }); 
    } 
}); 
+0

वर्क्स एक आकर्षण की तरह! उल्का चट्टानों (और आप भी करते हैं)! धन्यवाद। – jd1138

+0

कहीं और तरीका नहीं .. लेकिन यह काम कर रहा है! – TyrionGraphiste

2

कोशिश जोड़ने ऑटोफोकस

<input name="name" type="text" id="mainInput" autofocus> 
+0

मैंने भी कोशिश की! महान सुविधा - लेकिन यह केवल प्रारंभिक ड्रॉ पर केंद्रित है और बाद में कभी नहीं (रद्द/निर्माण के बीच टॉगल करें)। – jd1138

+0

कूल, इसके बारे में नहीं पता था! – Rijk

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