event.currentTarget.INPUT.value`如何在Meteor表单提交处理程序中为我提供输入值?

event.currentTarget.INPUT.value`如何在Meteor表单提交处理程序中为我提供输入值?,meteor,meteor-blaze,Meteor,Meteor Blaze,我发现可以从Meteor中提交的表单中获取文本输入值。我写了我的信。很好!下面是我的表单提交事件处理程序的一个片段: 'submit form': function(event, template) { event.preventDefault(); Assets.insert({ name: event.target.inputName.value, location: event.target.inputLocation.value, value: event

我发现可以从Meteor中提交的表单中获取文本输入值。我写了我的信。很好!下面是我的表单提交事件处理程序的一个片段:

'submit form': function(event, template) {
  event.preventDefault();
  Assets.insert({
    name: event.target.inputName.value,
    location: event.target.inputLocation.value,
    value: event.target.inputValue.value
  });
}
  • 我对event.target.playerName感到困惑。这是什么东西?流星为我们设置了那个物体吗?或者这是jQuery的事情?还是别的什么
  • 使用event.currentTarget是否更好/更安全?听起来嵌套表单是不允许的,所以它可能没有任何区别,因为在给定“提交表单”事件映射键的情况下,它没有任何方式“冒泡”

  • 交叉发布。

    对meteor本人来说非常陌生,所以我可能完全错了,但我相信您的事件目标只是标准javascript,而不是特定于meteor或jquery。我一直认为它是创建您自己的
    对象的简写。addEventListener()
    ,因此您的
    playerName
    将成为表单的子元素,因为它是对象的键

    想象一下,如果它是像
    form.addEventListener('submit',函数(e){…})
    这样的设置,可能会使它更熟悉


    至于第2点,如果需要,我不明白为什么不能使用currentTarget。我不认为它会更安全,除非你真的不知道事件可能来自哪里(可能是创建一个自定义包?)

    在这种情况下,你不是在使用
    模板
    对象,而是使用简单的jQ方式。快速查看包含示例代码的页面,它们使用
    function(event)
    ,而不是
    function(event,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>
    
  • event.target
    返回DOM元素。在您的例子中,它是
    表单
    元素,您可以使用命名属性获取其节点,请参见

  • 在这种情况下,可以使用target或currentTarget。在其他示例中,当存在“嵌套”节点时,最好使用currentTarget

  • 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>
         }
    })