Todas as soluções acima são bastante grandes, eu queria dar meus 2 centavos nisso.
Estou apenas verificando se o valor inserido é um número ou não, e verificando se não está em branco, só isso.
Aqui está o html:
<input type="text" ng-keypress="CheckNumber()"/>
Aqui está o JS:
$scope.CheckKey = function () {
if (isNaN(event.key) || event.key === ' ' || event.key === '') {
event.returnValue = '';
}
};
É bem simples.
Eu acredito que isso não funcionará no Paste tho, apenas para que seja conhecido.
Para Paste, acho que você precisaria usar o evento onChange e analisar a string inteira, outra besta, o tamme. Isso é específico para digitação.
ATUALIZAÇÃO para colar : basta adicionar esta função JS:
$scope.CheckPaste = function () {
var paste = event.clipboardData.getData('text');
if (isNaN(paste)) {
event.preventDefault();
return false;
}
};
E a entrada html adiciona o gatilho:
<input type="text" ng-paste="CheckPaste()"/>
Espero que isso ajude o /