Angularjs 如何支持数字和文本指令以及输入指令?
我有一个指令来检查输入值是否为数字,并根据执行操作Angularjs 如何支持数字和文本指令以及输入指令?,angularjs,angularjs-directive,directive,Angularjs,Angularjs Directive,Directive,我有一个指令来检查输入值是否为数字,并根据执行操作 myApp.directive('numbersOnly', function () { return { restrict: 'A', require: 'ngModel', link: function (scope, element, attr, ngModelCtrl) { function fromUser(text
myApp.directive('numbersOnly', function () {
return {
restrict: 'A',
require: 'ngModel',
link: function (scope, element, attr, ngModelCtrl) {
function fromUser(text) {
if (text) {
var transformedInput = text.replace(/[^0-9-]/g, '');
if (transformedInput !== text) {
ngModelCtrl.$setViewValue(transformedInput);
ngModelCtrl.$render();
}
return transformedInput;
}
return undefined;
}
ngModelCtrl.$parsers.push(fromUser);
}
};
});
当我将使用
时,上述代码将起作用,但当我将使用
时,上述代码将停止工作
请告诉我如何同时支持这两个条件?您能否尝试下面的代码,该代码在“如果”中还有一个条件(isNaN),如下所示
myApp.directive('numbersOnly', function () {
return {
restrict: 'A',
require: 'ngModel',
link: function (scope, element, attr, ngModelCtrl) {
function fromUser(text) {
if (text && isNaN(text)) {
var transformedInput = text.replace(/[^0-9-]/g, '');
if (transformedInput !== text) {
ngModelCtrl.$setViewValue(transformedInput);
ngModelCtrl.$render();
}
return transformedInput;
}
return undefined;
}
ngModelCtrl.$parsers.push(fromUser);
}
};
});
下面的代码修复了我的问题
myapp.directive('numbersOnly', function () {
return {
restrict: 'A',
require: 'ngModel',
link: function (scope, element, attr, ngModelCtrl) {
function fromUser(value) {
if (value) {
if(!isNaN(value)){
var text = value.toString();
}
else{
var text = value;
}
var transformedInput = text.replace(/[^0-9-]/g, '');
if (transformedInput !== text) {
ngModelCtrl.$setViewValue(transformedInput);
ngModelCtrl.$render();
}
return transformedInput;
}
return undefined;
}
ngModelCtrl.$parsers.push(fromUser);
}
};
});
因此,此代码将适用于这两种情况
或
以及
是,因为.replace
是字符串的方法你能创建一个简单的小提琴吗?你处理的是数字而不是字符串。既然浏览器已经过滤掉了非数字字符,为什么您首先需要它?@charlietfl我必须同时处理数字和字符串。在这种情况下,解决方案是什么?您想要实现什么?请注意,如果您使用input type=“number”
,则除了数字以外,只有允许的值是+,-,,e,e
,假设数字来了,那么该代码如何与数字一起工作。