web-dev-qa-db-ja.com

event.targetはイベントで未定義です

eachevents入力値を使用するにはどうすればよいですか?私の以下のコードがあなたをうまく説明することを願っています。

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にパラメーター値を渡すのに適しているかどうかわからないので、提案を歓迎します。

12

使用している表記法は、フォーム要素とevent.target ISフォーム要素の場合のみ有効です。

event.target.age.value

event.target はイベントが発生した要素、 event.currentTarget はイベントハンドラーをアタッチした要素です

divformに置き換え、targetcurrentTargetに置き換えると、動作します

event.currentTarget.age.value

ここではフィドル コードを使用する

16
user757095

イベントがコンテナdivにバインドされている場合、入力はターゲットから検索する必要があります。なぜならevent.targetは、イベントが関連付けられた要素を提供します。

div内の任意の値にアクセスするには、まずその要素にアクセスしてから、その要素のプロパティを使用して必要なものにアクセスする必要があります-.value この場合。

1
Cyclone