2017-03-16 2 views
0

J'ai fondé que si je veux écouter sur tout le document que je dois faire:Comment écouter la touche enfoncée sur tout le document en utilisant JavaScript et Meteor template?

$(document).keydown(function(e) { 
      console.log(e); 
      console.log(e.keyCode); 
      if (e.keyCode == 27) { 
       $('#tftextinput').value=""; 
       $('#tfbutton').click(); 
      } 
}); 

mais il ne pas écrire quoi que ce soit dans la console ... Je l'ai essayé une autre la version comme ceci:

$(".container.body").keydown(function(e) { 
      console.log(e); 
      console.log(e.keyCode); 
      if (e.keyCode == 27) { 
       $('#tftextinput').value=""; 
       $('#tfbutton').click(); 
      } 
}); 

ce code est dans le $(document).ready(function() {}); , mais rien ne se passait aussi ...

enter image description here

EDIT:

Si je vous écris ce code dans la console Web, il fonctionne: enter image description here

Alors pourquoi cela ne fonctionne pas dans mon code de modèle Meteor?

Template.home.onRendered(function() { 
    $(document).ready(function() { 
     /* 
     this method listen if we press "enter" in the research field and click on the button 
     */ 
     $('#tftextinput').keypress(function(e) { 
      if (e.keyCode == 13) { 
       $('#tfbutton').click(); 
      } 
     }); 
     $(document).keydown(function(e) { 
      console.log(e); 
      console.log(e.keyCode); 
      if (e.keyCode == 27) { 
       $('#tftextinput').value=""; 
       $('#tfbutton').click(); 
      } 
     }); 
    }); 
}); 

le premier écouteur est (celui qui écoute tftextinput)

Répondre

1

Essayez sur la fenêtre

$(window).on("keydown",function(e) { 
      console.log(e); 
      console.log(e.keyCode); 
      if (e.keyCode == 27) { 
       $('#tftextinput').value=""; 
       $('#tfbutton').click(); 
      } 
}); 
+0

enfin fonctionne, je viens de le mettre sur un autre endroit merci! – Jerome

+0

Gardez juste à l'esprit que ce code ne disparaîtra pas tout seul automatiquement. Donc, si vous avez ceci dans le rappel 'onRendered', il attachera un écouteur d'événement" keydown "chaque fois que vous rendrez ce modèle. Supposons que vous naviguiez dans les deux sens et que le modèle soit rendu 5 fois de sorte que 5 gestionnaires de raccourcis soient attachés à l'objet fenêtre. Je préconiserais d'aller avec des aides au niveau du template ou si vous avez vraiment besoin d'attacher un écouteur d'événement à 'window', puis de nettoyer dans un callback onDestroyed:' Template.home.onDestroyed (function() {$ (window) .off ("keydown")}) ' –

2

Vous pouvez utiliser des événements de modèle pour faire la même chose:

Template.home.events({ 
    'keydown':function(event){ 
     ... 
    }, 
    'keypress #tftextinput': function(event){ 
     ... 
    } 
}); 
+0

Je pense que cela fonctionnerait trop btw – Jerome

+0

Ceci est la meilleure réponse Meteor. – jordanwillis