Basta ya de investigar por todo internet porque llegaste al sitio justo, contamos con la respuesta que deseas pero sin problema.
Solución:
Angular admite esto fuera de la caja. ¿Has probado ngSubmit en tu elemento de formulario?
EDITAR: según el comentario sobre el botón de envío, consulte Enviar un formulario presionando Intro sin un botón de envío que da la solución de:
Si no le gusta la solución del botón de envío oculto, deberá vincular una función de controlador al evento de pulsación de tecla Enter o keyup. Esto normalmente requiere una directiva personalizada, pero la biblioteca AngularUI ya tiene configurada una buena solución de pulsación de teclas. Ver http://angular-ui.github.com/
Después de agregar angularUI lib, su código sería algo como:
o puede vincular la pulsación de la tecla Intro a cada campo individual.
Además, consulte estas preguntas SO para crear una directiva keypres simple: ¿Cómo puedo detectar onKeyUp en AngularJS?
EDITAR (2014-08-28): en el momento en que se escribió esta respuesta, ng-keypress/ng-keyup/ng-keydown no existía como directivas nativas en AngularJS. En los comentarios a continuación, @darlan-alves tiene una solución bastante buena con:
Si desea llamar a la función sin formulario, puede usar mi directiva ngEnter:
JavaScript:
angular.module('yourModuleName').directive('ngEnter', function()
return function(scope, element, attrs)
element.bind("keydown keypress", function(event)
if(event.which === 13)
scope.$apply(function()
scope.$eval(attrs.ngEnter, 'event': event);
);
event.preventDefault();
);
;
);
HTML:
Presento otras directivas increíbles en mi twitter y mi cuenta Gist.
Si solo tiene una entrada, puede usar la etiqueta de formulario.
Si tiene más de una entrada, o no quiere usar la etiqueta del formulario, o quiere adjuntar la entradakey funcionalidad a un campo específico, puede alinearlo a una entrada específica de la siguiente manera: