Angularjs 将输入字段中的逗号替换为点
欧洲国家在输入十进制数字时使用逗号符号(,)而不是点(.)。所以我想在用户输入时用逗号替换点符号。我知道input=number可以做到这一点,但我需要IE的支持 我想指令是最好的方法?我用下面的代码尝试了一下。但它失败了Angularjs 将输入字段中的逗号替换为点,angularjs,Angularjs,欧洲国家在输入十进制数字时使用逗号符号(,)而不是点(.)。所以我想在用户输入时用逗号替换点符号。我知道input=number可以做到这一点,但我需要IE的支持 我想指令是最好的方法?我用下面的代码尝试了一下。但它失败了 .directive('replaceComma', function(){ return { restrict: 'A', replace: true, link: function(scope, element, attrs
.directive('replaceComma', function(){
return {
restrict: 'A',
replace: true,
link: function(scope, element, attrs){
scope.$watch(attrs.ngModel, function (v) {
var convert = String(v).replace(",",".");
attrs.NgModel = convert;
});
}
}
});
convert变量是正确的。但输入框中的值不会更改。所以我猜attrs.ngModel=convert是错误的?我认为没有必要像指令一样执行此操作 说你的模板是
<input ng-model='someModel'>
ng模型是一个双向绑定,因此它应该可以工作var mystring=“this,is,a,test”mystring=mystring.split(',').join(“”) mystring contain==>“这是一个测试”通过指令: 在模板中:
<input type="text" ng-model="someModel" replace-comma >
我猜您想用
逗号
替换点
,而不是逗号
替换点
。以下模块可能会解决您的问题。。尝试过这个,它也奏效了。但指令更好,因为它使控制器更干净。欢迎使用stackoverflow,但我认为指令
附加到模块而不是控制器。
.directive('replacecomma', function () {
return {
require: 'ngModel',
link: function (scope, element, attrs, ngModelCtrl) {
scope.$watch(attrs.ngModel, function (newVal) {
if (newVal !== undefined && newVal !== null) {
ngModelCtrl.$setViewValue(String(newVal).replace(/,/g, '.'));
element.val(String(newVal).replace(/,/g, '.'));
}
})
}
}
});
<input type="text" ng-model="someModel" replace-comma >
.directive('replaceComma', function(){
return {
require: 'ngModel',
link: function (scope, element, attr, ngModelCtrl) {
function fromUser(text) {
if (text) {
var transformedInput = text.replace(/,/g, '.')
if (transformedInput !== text) {
ngModelCtrl.$setViewValue(transformedInput);
ngModelCtrl.$render();
}
return transformedInput;
}
return undefined;
}
ngModelCtrl.$parsers.push(fromUser);
}
};});