如何在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();
}
});
}
};
});
答案 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