Quiero ver el evento de presionar la tecla enter en el cuadro de texto a continuación. Para que quede más claro, estoy usando a ng-repeat
para poblar el cuerpo. Aquí está el 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 es mi módulo:
angular.module('components', ['ngResource']);
Estoy usando un recurso para llenar la tabla y mi código de controlador es:
function Ajaxy($scope, $resource) {
//controller which has resource to populate the table
}
angularjs
angularjs-directive
angular-ui
Venkata Tata
fuente
fuente
Respuestas:
Necesita agregar un
directive
, como este:Javascript :
HTML :
fuente
keydown
ykeypress
del elemento al que se le atribuye. Cuando se recibe el evento, la expresión proporcionada se evalúa dentro de un$apply
bloque.var key = typeof event.which === "undefined" ? event.keyCode : event.which;
siempre y cuando event.which no sea utilizado por todos los navegadores. Ver comentarios aquí: stackoverflow.com/a/4471635/2547632keyup
en la prueba de enlaceUna alternativa es usar la directiva estándar
ng-keypress="myFunct($event)"
Luego, en su controlador puede tener:
fuente
ng-keypress
no parece ser parte de 1.0.x angular,ui-keypress
(con semántica ligeramente diferente de llamadas) está disponible sin embargo: angular-ui.github.io/ui-utilsMi enfoque más simple usando solo la directiva de construcción angular:
ng-keypress
,ng-keydown
Ong-keyup
.Por lo general, queremos agregar soporte de teclado para algo que ya se maneja con ng-click.
por ejemplo:
Ahora, agreguemos soporte de teclado.
disparar con la tecla enter:
por tecla de espacio:
por espacio o tecla enter:
si estás en un navegador moderno
Más información sobre keyCode:
keyCode está en desuso pero tiene una API bien admitida, en su lugar, puede usar $ evevt.key en el navegador compatible.
Ver más en https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key
fuente
Otra alternativa simple:
Y la alternativa ng-ui:
fuente
Esto es lo que descubrí cuando estaba creando una aplicación con un requisito similar, no requiere escribir una directiva y es relativamente simple decir lo que hace:
fuente
Puede usar ng-keydown = "myFunction ($ event)" como atributo.
fuente
html
controller.js
fuente
También puede aplicarlo a un controlador en un elemento padre. Este ejemplo se puede utilizar para resaltar una fila en una tabla presionando las teclas de flecha arriba / abajo.
fuente
Molesto
no hizo nada por mi
Estrangular la muestra en https://docs.angularjs.org/api/ng/directive/ngKeypress , que hace ng-keypress = "count = count + 1", funciona.
Encontré una solución alternativa, que al presionar Enter invoca el botón ng-click del botón.
fuente
ng-keypress="console.log('foo')"
tampoco funcionó para mí, pero si lo haceng-keypress="fooMethod()"
y en su controlador$scope.fooMethod = function() { console.log('fooMethod called'); }
funciona.fuente
Esta es una extensión de la respuesta de EpokK.
Tuve el mismo problema de tener que llamar a una función de alcance cuando enter se presiona en un campo de entrada. Sin embargo, también quería pasar el valor del campo de entrada a la función especificada. Esta es mi solución:
});
El uso en HTML es el siguiente:
Felicitaciones a EpokK por su respuesta.
fuente
<input type="text" name="itemname" ng-model="item.itemname" lta-enter="add(item.itemname)" placeholder="Add item"/>
¿Qué hay de esto ?:
Ahora, cuando presiona la tecla Intro después de escribir algo en su entrada, el formulario sabe cómo manejarlo.
fuente
chat.sendMessage()
defineAlgún ejemplo de código que hice para mi proyecto. Básicamente agrega etiquetas a su entidad. Imagina que has ingresado texto, al ingresar el nombre de la etiqueta obtienes un menú desplegable con etiquetas precargadas para elegir, navegas con flechas y seleccionas con Enter:
HTML + AngularJS v1.2.0-rc.3
Controller.js
CSS + Bootstrap v2.3.2
fuente
Llego un poco tarde ... pero encontré una solución más simple usando
auto-focus
... Esto podría ser útil para botones u otros cuando aparece undialog
:<button auto-focus ng-click="func()">ok</button>
Eso debería estar bien si desea presionar el botón
on
Espacio o Entrar clics.fuente
Aquí está mi directiva:
uso:
fuente
puede usar ng-keydown, ng-keyup, ng-press como este.
fuente
Creo que usar document.bind es un poco más elegante
Para llevar el documento al constructor del controlador:
fuente
fuente
Todo lo que necesita hacer para obtener el evento es lo siguiente:
Una directiva puede hacerlo, pero no es así como lo hace.
fuente