Sé que muchas personas tienen discusiones sobre esto con respecto a la captura de eventos keyPress para DELETE y BACKSPACE y otros. keyPress no devolverá ningún charCode o keyCode para DELETE y BACKSPACE.
He visto un código JS elaborado que usa detectores de eventos para detectar keyPress vs keyDown o keyUP, pero todos ellos realmente sienten que los codificadores están saltando a través de aros para resolver lo que debería ser una solución muy simple.
Encontré una solución de usuario que parece bastante simple y quería ampliarla. Pero también parece un poco demasiado simple, por lo que quería preguntar sobre las trampas que este método podría introducir involuntariamente.
En mi formulario de plantilla: ng-keypress="validateKey($event);"
En JS:
$scope.validateKey = function($event) { var keyCode = $event.keyCode || $event.charCode ; if (keyCode !== undefined) { ... do something } else { return ; } }
Esto permitiría DELETE, BACKSPACE, ALT, CTRL, SHIFT... y probablemente un puñado de otros, pero es una solución bastante simple para lidiar con keyPress que no registra teclas específicas y aún así permite capturar todo lo demás que es relevante y que necesita ser evaluado. En mi caso, y probablemente en muchos casos, permitir que se presionen esas teclas indefinidas no daña el formulario o la validación.
Pero tal vez no estoy pensando en todo... o no me doy cuenta de que esto podría causar problemas imprevistos... ¿alguien puede dar más detalles sobre las trampas de este método?