我发现example code从Meteor中提交的表单中获取文本输入的值。我写了own version。效果很好!这是我的表单提交事件处理程序的片段:
'submit form': function(event, template) {
event.preventDefault();
Assets.insert({
name: event.target.inputName.value,
location: event.target.inputLocation.value,
value: event.target.inputValue.value
});
}
已转发here。
答案 0 :(得分:1)
在这种情况下,您不使用template
对象,而是使用普通的jQ方式。通过快速查看包含示例代码的页面,他们使用function(event)
而不是function(event, template)
(我更喜欢后者,但这只是品味问题)。以下是如何使用template
对象。
假设您的表单看起来像这样
<template name='createAccount'>
<form role="form">
<input placeholder="Your Name" name="name" type="text" />
<input placeholder="E-Mail Address" name="email" type="email" />
<input placeholder="Password" name="password" type="password" />
<div id="submitForm" class="outerButton">
(SOME BUTTON)
</div>
</form>
</template>
此处使用template
的模式:
Template.createAccount.events({
'click #submitForm': function (event, template) {
var displayName = template.find("input[name=name]").value;
var eMailAddress = template.find("input[name=email]").value;
var password = template.find("input[name=password]").value;
< INSERT displayName, eMailAddress, password IN COLLECTION>
}
})
答案 1 :(得分:0)
我自己也很陌生,所以我可能完全错了,但我相信你的事件目标只是标准的javascript,而不是meteor或jquery特定的。我一直认为它是创建自己的object.addEventListener()
的简写,因此您的playerName
将成为表单的子元素,因为它是对象的关键。
想象一下,如果设置类似form.addEventListnener('submit', function(e){ ... })
,可能会让它更熟悉。
对于数字2,我不知道为什么你不能使用currentTarget。我不认为它会更安全,除非你真的不知道事件可能来自哪里(可能创建一个自定义包?)。
答案 2 :(得分:0)
<linux_ip>
返回DOM元素。在您的情况下,它是event.target
元素,您可以使用命名属性来获取其节点,请参阅spec
在这种情况下,可以使用target或currentTarget。在其他示例中,当存在嵌套的&#39;节点,使用currentTarget可能更好。