如何在Meteor中重置表单

时间:2013-12-24 11:48:32

标签: meteor

我需要重置一个弹出窗体,其中的值全部来自会话变量:

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重置表单或模板并从其来源中提取值?

4 个答案:

答案 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>

另见: http://www.w3schools.com/jsref/met_form_reset.asp

答案 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()