event.target在事件中未定义

时间:2015-05-20 07:20:15

标签: javascript meteor handlebars.js meteor-blaze meteor-helper

如何在each中使用events输入值?希望我的下面的代码能很好地解释你。

HTML:

<template name="UpdateAge">
    {{#each Name}}
    <div data-action="showPrompt">
       <div>
          Some content
       </div>

       <div>
         <div>
            Some content
         </div>
       </div>
       <div>
           Name : {{name}}
           Age : <input type="text" name="age" value="{{age}}"/> //I need to access age values in event
       </div>
    </div>
{{/each}}
<template>

JS:

Template.UpdateAge.events({
  'click [data-action="showPrompt"]': function (event, template) {
        console.log(event.target.age.value); // TypeError: event.target.age.value is undefined
  }
});

我不知道我的方法是否适合将参数值传递给events,所以欢迎提出建议。

2 个答案:

答案 0 :(得分:16)

您使用的符号仅对表单元素有效,并且当event.target是表单元素时。

event.target.age.value

event.target是事件发生的元素,event.currentTarget是附加事件处理程序的元素

如果您将div替换为form并将target替换为currentTarget,那么它将起作用

event.currentTarget.age.value

here a fiddle使用您的代码

答案 1 :(得分:1)

如果事件绑定在容器div上,则应从目标中搜索输入,因为event.target会为您提供事件所附加的元素。

要访问div中的任何值,您必须首先获得对该元素的访问权限,然后使用该元素的属性来访问所需的任何内容 - 在这种情况下为.value