我为数字输入制作了一个不允许非数字字符的指令。 在
中回答How to allow only a number (digits and decimal point) to be typed in an input?
var app = angular.module('myApp', []);
app.controller('MainCtrl', function($scope) {
});
app.directive('validNumber', function() {
return {
require: '?ngModel',
priority: 1,
link: function(scope, element, attrs, ngModelCtrl) {
if(!ngModelCtrl) {
return;
}
ngModelCtrl.$parsers.push(function(val) {
var clean = val.replace( /[^0-9]+/g, '');
if (val !== clean) {
ngModelCtrl.$setViewValue(clean);
ngModelCtrl.$render();
}
return clean;
});
}
};
});
这是有效的。
当我替换代码
if (val !== clean) {
ngModelCtrl.$setViewValue(clean);
ngModelCtrl.$render();
}
使用:
element.val(clean);
它并不总是有效。
似乎正在调用element.val(clean),但有些东西会覆盖它。 有人可以解释一下吗?