Todas las soluciones anteriores son bastante grandes, quería dar mis 2 centavos en esto.
Solo estoy verificando si el valor ingresado es un número o no, y si no está en blanco, eso es todo.
Aquí está el html:
<input type="text" ng-keypress="CheckNumber()"/>
Aquí está el JS:
$scope.CheckKey = function () {
if (isNaN(event.key) || event.key === ' ' || event.key === '') {
event.returnValue = '';
}
};
Es muy sencillo.
Creo que esto no funcionará en Paste, solo para que se sepa.
Para Pegar, creo que necesitaría usar el evento onChange y analizar toda la cadena, otra bestia muy distinta a la del tamme. Esto es específico para escribir.
ACTUALIZAR para Pegar : solo agregue esta función JS:
$scope.CheckPaste = function () {
var paste = event.clipboardData.getData('text');
if (isNaN(paste)) {
event.preventDefault();
return false;
}
};
Y la entrada html agrega el disparador:
<input type="text" ng-paste="CheckPaste()"/>
Espero que esto te ayude