html – 有可能使AngularJS数字输入国际化吗?

前端之家收集整理的这篇文章主要介绍了html – 有可能使AngularJS数字输入国际化吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们试图让AngularJS国际化< input type ='number'/>值.

我们已经包括了本地化文件(例如,angular-locale_it-it.js),但是这些值仍然使用英语区域设置显示.

这是一个问题,因为我们的后端(和管理)期望数字值在用户的区域设置,接收123.45而不是123,45导致错误.

你可以找到一个例子on jsFiddle.

它适用于Chrome 27

但它在Firefox 21和Internet Explorer 10中不起作用.

解决方法

这可能不是你想要的答案,但也许它可以帮助你一点点:

JsBin:http://jsbin.com/iyulaj/1/

使用指令,您可以获取输入的数据,解析它,然后将其放在$scope变量中.请参阅:http://docs.angularjs.org/api/ng.directive:ngModel.NgModelController($解析器和$formatters,我从:Using angularjs filter in input element).

该指令可以搜索一个逗号,并用一个点替换它.它可能看起来像这样:

angular.module('MyModule').directive('numberinput',function () {
    return {
        restrict: 'A',require: 'ngModel',link: function(scope,element,attrs,ngModelController) {

            ngModelController.$parsers.push(function(data) {
                //convert data from view format to model format
                return data.replace(',',"."); //converted
            });

            ngModelController.$formatters.push(function(data) {
                //convert data from model format to view format
                return data.replace('.',","); //converted
            });

            // http://docs.angularjs.org/api/ng.directive:ngModel.NgModelController

        }
    };
});

输入字段:

<input ng-model='value' type='text' numberinput='' />

另请注意,输入现在是一个文本字段.看看这个:http://jsbin.com/iyurol/1/

输入是一个数字字段.但是键入11,5,它将输出ùndefined(注意,我住在德国,我们使用逗号符号).因此,如果浏览器不使用点符号,则不会正确地解析该数字,即使您居住在逗号表示法的区域中

请纠正我,如果有错误的话;)

猜你在找的HTML相关文章