Je veux attraper l'événement de la touche Entrée dans la zone de texte ci-dessous. Pour être plus clair, j'utilise un ng-repeat
pour remplir le corps. Voici le HTML:
<td><input type="number" id="closeqty{{$index}}" class="pagination-right closefield"
data-ng-model="closeqtymodel" data-ng-change="change($index)" required placeholder="{{item.closeMeasure}}" /></td>
Voici mon module:
angular.module('components', ['ngResource']);
J'utilise une ressource pour remplir la table et mon code de contrôleur est:
function Ajaxy($scope, $resource) {
//controller which has resource to populate the table
}
angularjs
angularjs-directive
angular-ui
Venkata Tata
la source
la source
Réponses:
Vous devez ajouter un
directive
, comme ceci:Javascript :
HTML :
la source
keydown
etkeypress
de l'élément auquel elle est attribuée. Lorsque l'événement est reçu, l'expression fournie est évaluée dans un$apply
bloc.var key = typeof event.which === "undefined" ? event.keyCode : event.which;
tant que event.which n'est pas utilisé par tous les navigateurs. Voir les commentaires ici: stackoverflow.com/a/4471635/2547632keyup
dans le test de liaisonUne alternative est d'utiliser la directive standard
ng-keypress="myFunct($event)"
Ensuite, dans votre contrôleur, vous pouvez avoir:
la source
ng-keypress
il ne semble pas que angular 1.0.x,ui-keypress
(avec une sémantique d'appel légèrement différente) soit disponible: angular-ui.github.io/ui-utilsMon approche la plus simple utilisant une directive build juste angulaire:
ng-keypress
,ng-keydown
oung-keyup
.Habituellement, nous voulons ajouter la prise en charge du clavier pour quelque chose qui est déjà géré par ng-click.
par exemple:
Maintenant, ajoutons la prise en charge du clavier.
déclenchement par touche entrée:
par touche espace:
par espace ou touche entrée:
si vous êtes dans un navigateur moderne
En savoir plus sur keyCode:
keyCode est obsolète mais bien pris en charge, vous pouvez utiliser $ evevt.key dans le navigateur pris en charge à la place.
Voir plus dans https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key
la source
Une autre alternative simple:
Et l'alternative ng-ui:
la source
Voici ce que j'ai compris lorsque je construisais une application avec une exigence similaire, cela ne nécessite pas d'écrire une directive et il est relativement simple de dire ce qu'elle fait:
la source
Vous pouvez utiliser ng-keydown = "myFunction ($ event)" comme attribut.
la source
html
controller.js
la source
Vous pouvez également l'appliquer à un contrôleur sur un élément parent. Cet exemple peut être utilisé pour mettre une ligne en surbrillance dans un tableau en appuyant sur les touches fléchées haut / bas.
la source
En essayant
n'a rien fait pour moi.
Strangley l'exemple à https://docs.angularjs.org/api/ng/directive/ngKeypress , qui fait ng-keypress = "count = count + 1", fonctionne.
J'ai trouvé une autre solution, en appuyant sur Entrée, appelez le ng-clic du bouton.
la source
ng-keypress="console.log('foo')"
n'a pas fonctionné pour moi non plus, mais si vous le faitesng-keypress="fooMethod()"
et dans votre contrôleur$scope.fooMethod = function() { console.log('fooMethod called'); }
fonctionne.la source
Ceci est une extension de la réponse d'EpokK.
J'ai eu le même problème d'avoir à appeler une fonction de portée lorsque enter est poussé sur un champ de saisie. Cependant, je voulais également transmettre la valeur du champ de saisie à la fonction spécifiée. Voici ma solution:
});
L'utilisation en HTML est la suivante:
Félicitations à EpokK pour sa réponse.
la source
<input type="text" name="itemname" ng-model="item.itemname" lta-enter="add(item.itemname)" placeholder="Add item"/>
Et ça?:
Maintenant, lorsque vous appuyez sur la touche Entrée après avoir écrit quelque chose dans votre entrée, le formulaire sait comment le gérer.
la source
chat.sendMessage()
définiUn exemple de code que j'ai fait pour mon projet. Fondamentalement, vous ajoutez des balises à votre entité. Imaginez que vous avez du texte d'entrée, en entrant le nom de la balise, vous obtenez un menu déroulant avec des balises préchargées à choisir, vous naviguez avec des flèches et sélectionnez avec Entrée:
HTML + AngularJS v1.2.0-rc.3
Controller.js
CSS + Bootstrap v2.3.2
la source
Je suis un peu en retard .. mais je l' ai trouvé une solution plus simple en utilisant
auto-focus
.. Cela peut être utile pour les boutons ou autres quand popping undialog
:<button auto-focus ng-click="func()">ok</button>
Cela devrait être bien si vous voulez appuyer sur le bouton
on
Espace ou sur Entrer clics.la source
voici ma directive:
usage:
la source
vous pouvez utiliser ng-keydown, ng-keyup, ng-press comme celui-ci.
la source
Je pense que l'utilisation de document.bind est un peu plus élégante
Pour envoyer un document au constructeur du contrôleur:
la source
la source
Tout ce que vous devez faire pour obtenir l'événement est le suivant:
Une directive peut le faire, mais ce n'est pas ainsi que vous le faites.
la source