Wszystkie powyższe rozwiązania są dość duże, chciałem dać na to moje 2 centy.
Sprawdzam tylko, czy wprowadzona wartość jest liczbą, czy nie, i sprawdzam, czy nie jest pusta, to wszystko.
Oto html:
<input type="text" ng-keypress="CheckNumber()"/>
Oto JS:
$scope.CheckKey = function () {
if (isNaN(event.key) || event.key === ' ' || event.key === '') {
event.returnValue = '';
}
};
To całkiem proste.
Wierzę, że to nie zadziała na Wklej, tylko po to, żeby było wiadomo.
Myślę, że w przypadku wklejania musiałbyś użyć zdarzenia onChange i przeanalizować cały ciąg, zupełnie inną bestię, tamme. Jest to specyficzne dla pisania.
UPDATE for Paste : po prostu dodaj tę funkcję JS:
$scope.CheckPaste = function () {
var paste = event.clipboardData.getData('text');
if (isNaN(paste)) {
event.preventDefault();
return false;
}
};
A wejście html dodaje wyzwalacz:
<input type="text" ng-paste="CheckPaste()"/>
Mam nadzieję, że to pomoże o /