아래 코드를 사용하여 입력란의 유형을 수정했습니다.Angularjs에서 소수점 이하의 숫자의 크기를 고정하는 방법은 무엇입니까?
"Marks %"라는 필드는 숫자와 소수 만 허용해야합니다. 소수점 이하 두 자리, 소수점 두 자리 이하 여야합니다.
내 HTML :
<div ng-app="jmApp">
<h2>Validate Price</h2>
<div ng-controller="MainCtrl">
<input type="text" ng-model="salary" valid-number />
</div>
</div>
내 컨트롤러 :
var app = angular.module('jmApp', []);
app.controller('MainCtrl', function($scope) {
});
app.directive('validNumber', function() {
return {
require: '?ngModel',
link: function(scope, element, attrs, ngModelCtrl) {
if(!ngModelCtrl) {
return;
}
ngModelCtrl.$parsers.push(function(val) {
if (angular.isUndefined(val)) {
var val = '';
}
var clean = val.replace(/[^0-9\.]/g, '');
var negativeCheck = clean.split('-');
var decimalCheck = clean.split('.');
if(!angular.isUndefined(negativeCheck[1])) {
negativeCheck[1] = negativeCheck[1].slice(0, negativeCheck[1].length);
clean =negativeCheck[0] + '-' + negativeCheck[1];
if(negativeCheck[0].length > 0) {
clean =negativeCheck[0];
}
}
if(!angular.isUndefined(decimalCheck[1])) {
decimalCheck[0] = decimalCheck[0].slice(0,2);
decimalCheck[1] = decimalCheck[1].slice(0,2);
clean =decimalCheck[0] + '.' + decimalCheck[1];
}
if (val !== clean) {
ngModelCtrl.$setViewValue(clean);
ngModelCtrl.$render();
}
return clean;
});
element.bind('keypress', function(event) {
if(event.keyCode === 32) {
event.preventDefault();
}
});
}
};
});
출력 :
It is allowing only numbers.
It will consider only two digits after decimal point.
If I entered any number of digits followed by decimal point it accepts only first two digits and decimal point.
하지만 ENTERE 경우 d 개의 정수를 생각하면 여러 개의 숫자가 고려됩니다.
누구든지 정수의 크기를 제한하는 방법을 알려주십시오. 또는 여러 자릿수도 입력 한 경우에도 소수점이있는 경우 처음 두 자릿수 만 고려해야합니다.
내가 뭘 복사하고 다음 값을 지나서 경우 예상되는 결과이다 : 100, 120.105, 120, 작동하지 -100 –