event.target在事件中未定义

Ram*_*san 13 javascript handlebars.js meteor 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>
Run Code Online (Sandbox Code Playgroud)

JS:

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

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

小智 17

您使用的表示法仅对表单元素有效,并且event.target是表单元素时有效.

event.target.age.value
Run Code Online (Sandbox Code Playgroud)

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

如果更换divform和替换targetcurrentTarget,然后它会工作

event.currentTarget.age.value
Run Code Online (Sandbox Code Playgroud)

这里是一个使用你的代码的小提琴

  • event.target是您单击的元素.所以,如果你点击输入框event.target是输入框,而不是表格.表单元素将是`currentTarget` (2认同)