我的html页面上有一个输入框,可以将数据绑定到ng-model。我使用指令将输入字段限制为仅限数字。我不能使用默认的HTML5限制,如type =“number”。我遇到的问题是,如果输入非数字字符两次,例如按123然后按两次k,则将k添加到123,得到123k。但是,当我按下另一个键时,指令会删除k。
如果你按两次相同的键,有人可以帮我解决这封信出现的问题
我使用的指令:
angular.module('app').
directive('onlyDigits', function () {
return {
restrict: 'A',
require: '?ngModel',
link: function (scope, element, attrs, ngModel) {
if (!ngModel) return;
ngModel.$parsers.unshift(function (inputValue) {
var digits = inputValue.split('').filter(function (s) { return (!isNaN(s) && s != ' '); }).join('');
ngModel.$viewValue = digits;
ngModel.$render();
return digits;
});
}
};
});
答案 0 :(得分:1)
这是我们用来仅在指令中实现数字的原因:
directives.directive('numbersOnly', function () {
'use strict';
return {
require: 'ngModel',
link: function (scope, element, attrs, modelCtrl) {
modelCtrl.$parsers.push(function (inputValue) {
if (inputValue === undefined) {
return '';
}
var transformedInput = inputValue.replace(/[^0-9]/g, '');
if (transformedInput !== inputValue) {
modelCtrl.$setViewValue(transformedInput);
modelCtrl.$render();
}
return transformedInput;
});
}
};
});