2013-06-21 6 views
10

우리는 AngularJS 국제화를 <input type='number' /> 값으로 설정하려고합니다.AngularJS에서 숫자 입력을 국제화 할 수 있습니까?

현지화 파일 (예 : angular-locale_it-it.js)이 포함되어 있지만 값은 여전히 ​​영어 로켈을 사용하여 표시됩니다.

우리 백엔드 (및 관리)는 숫자 값이 사용자 로케일에 올 것으로 예상하고 123,45 대신 123.45을 수신하면 오류가 발생하기 때문에 문제가됩니다.

예 : on jsFiddle을 찾을 수 있습니다.

은 크롬 27

Screenshot of the result in Chrome

에서 작동하지만 어쩌면이 원하는 대답하지 않을 수 탐색기 (10)

Screenshot of the result in Firefox

+3

에서 자세한 내용을 참조하십시오. – Lucas

답변

3

파이어 폭스 (21)와 인터넷에서 작동하지만, 아니에요 그것은 당신을 조금 도와줍니다 :

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

지시어를 사용하여 입력 데이터를 가져 와서 구문 분석 한 다음 $scope 변수에 넣을 수 있습니다. 참조하십시오 : http://docs.angularjs.org/api/ng.directive:ngModel.NgModelController ($parsers$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가 출력됩니다 (독일에 거주하고 있으며 쉼표 표기법을 사용하고 있습니다). 따라서 쉼표 표기법을 사용하는 지역에 거주하고 있더라도 점 표기법이 아닌 브라우저는 숫자를 올바르게 '구문 분석'하지 않습니다.

0

일반적으로 형식을 지정할 데이터의 형식은 숫자입니다. replace()를 호출하기 전에 숫자를 문자열로 변환해서는 안됩니다. 모델 데이터에 숫자 값이있는 경우 오류가 발생합니다. 더 잘 작동합니다.

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

각도와 관련이 없습니다. IMHO는 브라우저에서 제공해야합니다. lang 속성에 의해 구동되어야한다

<!DOCTYPE html> 
<html lang="it"> 
... 

내가 독일 통화 입력에 포맷에 대해 동일한 문제로 실행 해요 HTML5 number inputs – Comma and period as decimal marks

+0

불행히도 (우리가 예상했듯이) IE11에서는 작동하지 않습니다. – hgoebl

관련 문제