Angularjs 将输入字段中的逗号替换为点

Angularjs 将输入字段中的逗号替换为点,angularjs,Angularjs,欧洲国家在输入十进制数字时使用逗号符号(,)而不是点(.)。所以我想在用户输入时用逗号替换点符号。我知道input=number可以做到这一点,但我需要IE的支持 我想指令是最好的方法?我用下面的代码尝试了一下。但它失败了 .directive('replaceComma', function(){ return { restrict: 'A', replace: true, link: function(scope, element, attrs

欧洲国家在输入十进制数字时使用逗号符号(,)而不是点(.)。所以我想在用户输入时用逗号替换点符号。我知道input=number可以做到这一点,但我需要IE的支持

我想指令是最好的方法?我用下面的代码尝试了一下。但它失败了

  .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);
    }
};});