我尝试过在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();
}
});
答案 0 :(得分:0)
你的第二次尝试:
e.target.reset();
应该可以正常工作。如果它不起作用,请检查控制台中是否有任何错误并在此处报告。
在上面的代码中,您可以像这样定义处理程序:
'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。