我正在使用AngularJS,我实现的一个指令是阻止输入非数字字符,实现如下:
mainModule.directive('onlyNumbers', function () {
return {
require: 'ngModel',
link: function(scope, element, attrs, modelCtrl) {
modelCtrl.$parsers.push(function (inputValue) {
var transformedInput = inputValue.replace(/\D/g,'').replace(/ /g, '');
if (transformedInput != inputValue) {
modelCtrl.$setViewValue(transformedInput);
modelCtrl.$render();
}
return transformedInput;
});
}
};
});
当在text
类型的输入上使用时,该指令工作正常但如果我想在类型为number
的输入上使用它,则该指令将被忽略,并允许输入+, - ,。和e字符,它们对输入数字有效,但对我的方案无效,因为我不想允许将负数,小数和指数数字输入到这些类型为数字的输入中。
我怎样才能使这个指令比输入上使用的指令更优先?