2015-01-15 135 views
0

我有兩個不同的模板,使用日期選擇器將帶日期的子文檔插入到文檔中。一個人工作,一個人不工作,即使他們看起來一樣。項目到期插入工作正常;延遲直到插入只刷新頁面。我使用的是rajit:bootstrap3-datepicker軟件包。流星 - 無法防止刷新

HTML(濃縮):

<template name="itemsList"> 
    {{#each actionItems}} 
    {{> item}} 
    {{/each}} 
</template> 

<template name="item"> 
    <div class="item"> 
    <div class="item-content"> 
     <div class="mod-table"> 
     <form class="form-inline mod-field"> 
      {{#unless actionItem}} 
      {{> delayUntil}} 
      {{/unless}} 
     </form> 
     {{#if actionItem}} 
      {{> actionModtable}} 
     {{/if}} 
     </div> 
    </div> 
    </div> 
</template> 

<template name="delayUntil"> 
    <form class="form-inline delay-until"> 
    <div class="mod-field"> 
     <input type="text" class="form-control" name="text" id="delay-until-picker" placeholder="Ignore until..." /><button class="btn btn-default" type="submit">Submit</button> 
    </div> 
    </form> 
</template> 

<template name="actionModtable">  
    {{> datepicker}} 
</template> 

<template name="datepicker"> 
    <form class="form-inline item-due"> 
    <div class="mod-field"> 
     <input type="text" class="form-control" name="text" id="due-date-picker" placeholder="Enter due date" /><button class="btn btn-default" type="submit">Submit</button> 
    </div> 
    </form> 
</template> 

JS(濃縮):

Template.datepicker.rendered = function() { 
    $('#due-date-picker').datepicker({ 
    todayBtn: true, 
    autoclose: true, 
    todayHighlight: true 
    }); 
}; 

Template.datepicker.events({ 
    'submit .item-due': function(event) { 
    event.preventDefault(); 

    var itemDue = event.target.text.value; 

    Items.update(this._id, {$set: {itemDue: itemDue}}); 

    event.target.text.value = ""; 

    return false; 
    }, 
}); 

Template.delayUntil.rendered = function() { 
    $('#delay-until-picker').datepicker({ 
    todayBtn: true, 
    autoclose: true, 
    todayHighlight: true 
    }); 
}; 

Template.delayUntil.events({ 
    'submit .delay-until': function(event) { 
    event.preventDefault(); 

    var delayUntil = event.target.text.value; 

    Items.update(this._id, {$set: {delayUntil: delayUntil}}); 

    event.target.text.value = ""; 

    return false; 
    }, 
}); 
+0

是否有可能因爲您使用了ID而導致失敗,因此它以某種方式選擇了錯誤的元素?你的網頁上是否有重複的ID? – stubailo

+0

或者可能因爲這兩個模板的上下文不同?你可以在這兩個日誌中記錄'this._id',以確保它是你所期望的嗎? – richsilv

回答

1

所以答案是有點傻。我有一個嵌入表單(oops)的表單。我擺脫了嵌套,一切都與世界正確。

+0

這幫助我意識到我已經忘記在表單提交事件上添加'event.preventDefault()'!) – avalanche1