2015-06-24 23 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 

},

但是,我可以」我不知道這個問題,但是我不知道這個問題,但是我不知道這個問題,請參閱創建從真到假的切換,我驗證創建是真實的,從該助手塊調用焦點,但沒有變化)

我也嘗試了跟蹤器會話VAR創造 - 這樣,不得要領,無法合焦:

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

你在正確的軌道上,你只需要使用一個Tracker.afterFlush回調註冊時,流星有機會呈現Session變量被認定無效後的輸入和選擇的Spacebars {{#if}}塊助手路徑執行focus通話。

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

相關問題