我搜索了几乎所有的东西,但是不可能得到答案,也许这里有人可以提供帮助。
好的,首先让我介绍一下这个指令的作用,它不允许任何字母输入我的输入
我的OnlyNumeric
指令在我的input type = "text"
时有效,
但input type = "number"
时它不起作用
这是我的指示
app.directive('onlyNumeric', function () {
return {
require: 'ngModel',
link: function (scope, element, attr, ngModelCtrl) {
function fromUser(text) {
alert();
if (text == null) { text = ""; }
var text = text.toString();
var transformedInput = text.replace(/[^0-9]+/g, '');
if (transformedInput.length > 7) {
transformedInput = transformedInput.slice(0, -1);
}
if (transformedInput !== text) {
ngModelCtrl.$setViewValue(transformedInput);
ngModelCtrl.$render();
}
if (!isNaN(Number(transformedInput))) {
// alert("decimal no");
return parseInt(transformedInput);
}
else { return transformedInput; }
// return transformedInput;
}
ngModelCtrl.$setValidity('is_valid', false);
ngModelCtrl.$parsers.push(fromUser);
}
};
});
我的HTML
<input type = "number" only-numeric ng-model ="age">
因此,当我将我的类型更改为“text”时,它可以正常工作
所以我尝试了另一种方法来捕获keydown事件但是,我没有得到如何捕获我的输入值,
在输入有效之前,行ngModelCtrl.$parsers.push(fromUser);
不会传递我的输入
答案 0 :(得分:0)
我认为你没有执行该指令,你应该使用带有名称和破折号的表示法,如下所示:
<input type="number" only-numeric ng-model="age">