2015-01-15 94 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