我需要重置一个弹出窗体,其中的值全部来自会话变量:
Template.customerinfo.name = -> Session.get('activeCustomer').name
现在我手动完成:
Template.customerinfo.events
'click #cancelButton': ->
Client.getById('inputName').val(Session.get('activeCustomer').name)
Meteor.render
会更加混乱,因为我必须使用Meteor.render来填充当前的表单/模板,然后将其插入到DOM中。
有没有办法告诉meteor重置表单或模板并从其来源中提取值?
答案 0 :(得分:5)
在Handlebars模板中,即在您执行Meteor.call()或集合插入/更新之后,将此jQuery调用。它返回DOM中的第一个表单,然后调用DOM reset()。
$('.add-post-form')[0].reset();
在您的HTML中:
<form class="form-horizontal add-post-form" role="form">
// Your form HTML.
</form>
答案 1 :(得分:3)
只需使用event.target.name.value = "";
答案 2 :(得分:1)
只有一个条件,模板(或变量)将呈现,然后更改该条件。例如,在HTML中有:
<Template name="customerinfo">
{{#if somevariable}}
{{name}}
{{/if}}
</template>
在JS中,有......
var somevariable = true;
和这些助手:
Template.customerinfo.name = function(){
return Session.get('activeCustomer').name;
}
Template.customerinfo.somevariable = function(){
return somevariable
}
由于只有当somevariable为true时才会呈现模板,所以当需要重新呈现表单时,执行函数resetForm():
resetForm = function(){
somevariable = false;
somevariable = true;
}
答案 3 :(得分:0)
我认为您可以添加隐藏重置按钮来重置表单。
CSS
.hide { display: none; }
把手tmpl
<template name="btn-reset-hide">
<input type="reset" class="btn-reset-hide">
</template>
{{> btn-reset-hide}}
JS
resetForm = (tmpl) ->
if tmpl?
($ tmpl.find '.btn-reset-hide').trigger 'click'
else
($ '.btn-reset-hide').trigger 'click'
调用resetForm()