Quero pegar o evento de pressionar a tecla Enter na caixa de texto abaixo. Para deixar mais claro, estou usando um ng-repeat
para preencher o tbody. Aqui está o 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>
Este é o meu módulo:
angular.module('components', ['ngResource']);
Estou usando um recurso para preencher a tabela e meu código de controlador é:
function Ajaxy($scope, $resource) {
//controller which has resource to populate the table
}
angularjs
angularjs-directive
angular-ui
Venkata Tata
fonte
fonte
Respostas:
Você precisa adicionar um
directive
, assim:Javascript :
HTML :
fonte
keydown
ekeypress
do elemento ao qual é atribuída. Quando o evento é recebido, a expressão fornecida é avaliada dentro de um$apply
bloco.var key = typeof event.which === "undefined" ? event.keyCode : event.which;
contanto que event.which não seja usado por todos os navegadores. Veja comentários aqui: stackoverflow.com/a/4471635/2547632keyup
no teste de ligaçãoUma alternativa é usar a diretiva padrão
ng-keypress="myFunct($event)"
Então, no seu controlador, você pode ter:
fonte
ng-keypress
não parece ser parte de 1.0.x angular,ui-keypress
(com um pouco diferentes semânticas de chamada) está disponível no entanto: angular-ui.github.io/ui-utilsMinha abordagem mais simples usando apenas a diretiva de incorporação angular:
ng-keypress
,ng-keydown
Oung-keyup
.Normalmente, queremos adicionar suporte de teclado para algo que já é tratado com ng-click.
por exemplo:
Agora, vamos adicionar suporte ao teclado.
acionar pela tecla enter:
por tecla de espaço:
pelo espaço ou tecla enter:
se você estiver no navegador moderno
Mais sobre keyCode:
keyCode foi descontinuado, mas possui uma API bem suportada, você pode usar $ evevt.key no navegador suportado.
Veja mais em https://developer.mozilla.org/pt-BR/docs/Web/API/KeyboardEvent/key
fonte
Outra alternativa simples:
E a alternativa ng-ui:
fonte
Aqui está o que eu descobri quando estava criando um aplicativo com um requisito semelhante, ele não requer a criação de uma diretiva e é relativamente simples dizer o que faz:
fonte
Você pode usar ng-keydown = "myFunction ($ event)" como atributo.
fonte
html
controller.js
fonte
Você também pode aplicá-lo a um controlador em um elemento pai. Este exemplo pode ser usado para destacar uma linha em uma tabela pressionando as teclas de seta para cima / para baixo.
fonte
Tentando
não fez nada por mim.
Strangley a amostra em https://docs.angularjs.org/api/ng/directive/ngKeypress , que faz ng-keypress = "count = count + 1", funcionar.
Encontrei uma solução alternativa, pressionando Enter, para ativar o ng-click do botão.
fonte
ng-keypress="console.log('foo')"
também não funcionou para mim, mas se você fazng-keypress="fooMethod()"
e no seu controlador$scope.fooMethod = function() { console.log('fooMethod called'); }
funciona.fonte
Esta é uma extensão da resposta do EpokK.
Eu tive o mesmo problema de ter que chamar uma função de escopo quando enter é pressionado em um campo de entrada. No entanto, eu também queria passar o valor do campo de entrada para a função especificada. Esta é a minha solução:
});
O uso em HTML é o seguinte:
Parabéns ao EpokK pela resposta.
fonte
<input type="text" name="itemname" ng-model="item.itemname" lta-enter="add(item.itemname)" placeholder="Add item"/>
Que tal isso ?:
Agora, quando você pressiona a tecla Enter após escrever algo em sua entrada, o formulário sabe como lidar com isso.
fonte
chat.sendMessage()
definidoAlguns exemplos de código que fiz para o meu projeto. Basicamente, você adiciona tags à sua entidade. Imagine que você inseriu o texto. Ao inserir o nome da tag, você obtém o menu suspenso com tags pré-carregadas para escolher, navega com as setas e seleciona com Enter:
HTML + AngularJS v1.2.0-rc.3
Controller.js
CSS + Bootstrap v2.3.2
fonte
Estou um pouco atrasado .. mas achei uma solução mais simples usando
auto-focus
.. Isso poderia ser útil para botões ou outros quando aparecer umdialog
:<button auto-focus ng-click="func()">ok</button>
Tudo bem se você quiser pressionar o botão
on
Espaço ou Inserir cliques.fonte
aqui está a minha diretiva:
uso:
fonte
você pode usar ng-keydown, ng-keyup, ng-press como este.
fonte
Eu acho que usar document.bind é um pouco mais elegante
Para obter o documento para o construtor do controlador:
fonte
fonte
Tudo o que você precisa fazer para obter o evento é o seguinte:
Uma diretiva pode fazer isso, mas não é assim que você faz.
fonte