web-dev-qa-db-fra.com

event.target n'est pas défini dans les événements

Comment utiliser les valeurs d'entrée each dans events? J'espère que mon code ci-dessous vous expliquera bien.

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

Je ne sais pas si mon approche est bonne pour passer des valeurs de paramètre à events donc les suggestions sont les bienvenues.

12
Ramesh Murugesan

la notation que vous utilisez n'est valide que pour les éléments de formulaire et lorsque event.target IS un élément de formulaire.

event.target.age.value

event.target est l'élément où l'événement s'est produit, event.currentTarget est l'élément qui a attaché le gestionnaire d'événements

si vous remplacez div par form et remplacez target par currentTarget, cela fonctionnera

event.currentTarget.age.value

ici un violon en utilisant votre code

16
user757095

Si l'événement est lié au conteneur div, l'entrée doit être recherchée depuis la cible, car event.target vous donnerait l'élément auquel l'événement était attaché.

Pour accéder à n'importe quelle valeur dans div, vous devez d'abord avoir accès à cet élément, puis utiliser les propriétés de cet élément pour accéder à tout ce qui est nécessaire - .value dans ce cas.

1
Cyclone