我们试图让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(注意,我住在德国,我们使用逗号符号).因此,如果浏览器不使用点符号,则不会正确地解析该数字,即使您居住在逗号表示法的区域中
请纠正我,如果有错误的话;)