不确定这是Meteor问题,JavaScript问题还是其他问题。单击表单按钮会导致不需要的页面重新加载。
其他信息:
注释掉Posts.insert()行并不能解决问题
//来自application.js
// *这是应用程序中唯一与事件相关的代码(除了流星从我们身上抽象出来的任何幕后内容)
Template.new_post.events = {
'click #submit' : function () {
var text = $('#title').val();
var cat = $('#category').val();
// save our post with the value of the textbox
Posts.insert({title : text, category : cat});
}
};
//来自index.html
<template name="new_post">
<form class="form-horizontal">
<fieldset>
<div class="control-group">
<!-- Text input-->
<label class="control-label" for="title">Title</label>
<div class="controls">
<input type="text" id="title" value="{{text}}" class="input-xlarge">
<p class="help-block">Hint: Summarize your post in a few words</p>
</div>
</div>
<div id="form-part-2">
<div class="control-group">
<label class="control-label" for="categories">Category</label>
<div class="controls">
<select class="input-xlarge" id="category">
{{#each categories}}
<option value="{{defaultLabel}}">{{defaultLabel}}</option>
{{/each}}
</select>
<p class="help-block">Hint: Choose a category</p>
</div>
</div>
<!-- Button -->
<div class="control-group">
<div class="controls">
<button class="btn btn-success" id="submit">Done</button>
</div>
</div>
</div><!-- end div form-part-2 -->
</fieldset>
</form>
</template>
答案 0 :(得分:13)
我认为你必须在函数结束时返回false以防止提交。
答案 1 :(得分:5)
除了回复false
之外,您还可以致电event passed into your handler上的preventDefault()
:
'click #submit' : function (template, event) {
...
event.preventDefault();
}
这只会阻止默认操作(即提交表单),但不会阻止事件传播。