Toutes les solutions ci-dessus sont assez importantes, je voulais donner mon avis sur la question.
Je vérifie seulement si la valeur entrée est un nombre ou non, et si elle n'est pas vide, c'est tout.
Voici le code html :
<input type="text" ng-keypress="CheckNumber()"/>
Voici le JS :
$scope.CheckKey = function () {
if (isNaN(event.key) || event.key === ' ' || event.key === '') {
event.returnValue = '';
}
};
C'est très simple.
Je crois que cela ne fonctionnera pas avec Paste, juste pour le savoir.
Pour le collage, je pense qu'il faut utiliser l'événement onChange et analyser la chaîne entière, ce qui est une autre bête le tamme. C'est spécifique à la saisie.
UPDATE pour Paste : il suffit d'ajouter cette fonction JS :
$scope.CheckPaste = function () {
var paste = event.clipboardData.getData('text');
if (isNaN(paste)) {
event.preventDefault();
return false;
}
};
Et l'entrée html ajoute le déclencheur :
<input type="text" ng-paste="CheckPaste()"/>
J'espère que ça aidera o/