清除Meteor中的表单输入

时间:2016-07-03 20:13:46

标签: forms meteor

我尝试过在SO和其他地方找到的多个选项,用于清除表单输入,所有这些都在下面的代码中列出,但似乎没有任何效果。是否有任何关于此表格的具体信息将决定我应该使用哪一个?

<template name="CompanyAdd">
    <div>
        <form class="form-inline">
            <div class="form-group">
                {{> inputAutocomplete settings=companySettings id="companyAdd" name="companyAdd" class="input-xlarge" autocomplete="off" placeholder="Add Company"}}
            </div>
            <button type="submit" class="btn btn-default company-add">Add</button>
        </form>
    </div>
</template


Template.CompanyAdd.events({
    'submit form': function(e) {
        e.preventDefault();

        var selection = $(e.target).find('[id=companyAdd]').val();

        var company = {
            ticker: selection
        };

        if(Companies.findOne({ticker:selection})) {
            console.log("Do nothing");
        } else {
            Meteor.call('companyAdd', company, function(error, result) {
            });
        }
        //event.target.reset();
        //e.target.reset();
        //target.text.value = '';
        //template.find("form").reset();
        //document.getElementById("companyAdd").reset();
    }
});

2 个答案:

答案 0 :(得分:0)

你的第二次尝试:

e.target.reset();

应该可以正常工作。如果它不起作用,请检查控制台中是否有任何错误并在此处报告。

  

The handler function receives two arguments: event, an object with information about the event, and template, a template instance for the template where the handler is defined.

在上面的代码中,您可以像这样定义处理程序:

'submit form': function(e) {

您已将事件参数命名为e,并放弃模板参数。

  • e包含有关该事件的信息
  • e.target是表单元素(事件在'submit form'上定义)
  • e.target.reset成功,因为reset是调用表单的有效函数。

简而言之,您的其他尝试失败是因为:

  • event.target.reset();事件未定义或传入,至少没有使用名称event(您使用e

  • target.text.value = '';目标是未定义的变量

  • template.find("form").reset();此操作失败,因为template未定义。如果您更改处理程序定义以接收模板变量,那么这将有效(将'submit form': function(e)更改为'submit form': function(e, template)
  • document.getElementById("companyAdd").reset();此操作失败,因为标识为companyAdd的元素是输入元素,而不是表单,因此.reset()未定义。您可以将其更改为document.getElementById("companyAdd").text.value = ''

答案 1 :(得分:0)

鉴于你有

var selection = $(e.target).find('[id=companyAdd]').val();

这是你想要清除的输入,而且 - 我认为 - 有效,我会这样做:

var field = $(e.target).find('[id=companyAdd]');
var selection = field.val();
...
field.val('')

否则,如果您想重置所有表格,请转到@ JeremyK的#reset。