Javascript 自定义验证[AngualrJS]
我正在编写代码,以便在输入文本框上实现验证。这应该允许用户只输入数字。几乎成功实现了此功能,但面临一个困难: 我无法删除最后输入的字符。Javascript 自定义验证[AngualrJS],javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我正在编写代码,以便在输入文本框上实现验证。这应该允许用户只输入数字。几乎成功实现了此功能,但面临一个困难: 我无法删除最后输入的字符。 app.directive('num', function () { return { restrict: 'A', require: 'ngModel', link: function (scope, el, attrs, ctrl) { var lastValidValue; var NUMBER_
app.directive('num', function () {
return {
restrict: 'A',
require: 'ngModel',
link: function (scope, el, attrs, ctrl) {
var lastValidValue;
var NUMBER_REGEXP = /^[0-9]+$/;
ctrl.$parsers.push(function (value) {
console.log('inside parsers')
console.log("Last " + lastValidValue + ", View " + ctrl.$viewValue + ", model " + ctrl.$viewValue);
if (NUMBER_REGEXP.test(value)) {
console.log('true')
lastValidValue = value;
}
else {
ctrl.$viewValue = lastValidValue;
ctrl.$render();
}
console.log("Last " + lastValidValue + ", View " + ctrl.$viewValue + ", model " + ctrl.$viewValue);
return lastValidValue;
});
}
}
})
请帮助我解决这个问题。尝试将
if(NUMBER\u REGEXP.test(value))
更改为if(NUMBER\u REGEXP.test(value)| value==“”)
,这是有效的。谢谢。你能告诉我我做错了什么吗?所以你把指令编码成只允许数字(你的正则表达式模式)…空或“”不算作数字,所以你必须考虑/允许这种情况。