在角度js中仅输入小数点后两位小数

时间:2014-09-11 11:55:32

标签: angularjs angularjs-directive

如何在textbox中输入最多两位小数的十进制值。请告诉我如何修改以下指令。

我使用了以下代码

app.directive('nksOnlyNumber', function () {
    return {
        restrict: 'EA',
        require: 'ngModel',
        link: function (scope, element, attrs, ngModel) {
            scope.$watch(attrs.ngModel, function (newValue, oldValue) {
                var spiltArray = String(newValue).split("");
                if (spiltArray.length === 0) return;
                if (spiltArray.length === 1
                     && (spiltArray[0] == '-'
                     || spiltArray[0] === '.')) return;
                if (spiltArray.length === 2
                     && newValue === '-.') return;

                /*Check it is number or not.*/
                if (isNaN(newValue)) {
                    ngModel.$setViewValue(oldValue);
                    ngModel.$render();
                }
            });
        }
    };
});

1 个答案:

答案 0 :(得分:1)

我会在输入上使用ng-pattern来做,所以我可以使用正则表达式和角度内置的验证框架。

<input type="number" ng-pattern="/^[0-9]+(\.[0-9]{1,2})?$/" name="somenumber" ng-model="data.somenumber" />

http://plnkr.co/edit/b2G5YujiwQBdv5lDjIOc?p=preview

我在这里发现了这个正则表达式:Simple regular expression for a decimal with a precision of 2