2012-06-14 4 views
4

사용자가 입력 한 숫자를 네덜란드어 형식으로 포맷하려고합니다. 즉. 십진수 구분 기호를 ,, 천 단위 구분 기호를 으로 사용하십시오. 내가 흐림 내 숫자 필드를 포맷 할extjs에서 네덜란드어 형식을 사용하여 숫자 필드의 서식을 지정하는 방법은 무엇입니까?

blur: function() { 
    Ext.util.Format.number(this.value, '000,000.00') 
} 

, 위의 코드는 잘 작동하지만 내 요구 사항은 this- '000000.000,00'와 같은 형식을 얻는 것입니다. extjs에서이 작업을 수행하는 방법?

답변

8

빠르고 더러움, 그냥 thousandSeparatordecimalSeparator으로 설정하십시오. 그것은 작동합니다 :

//Set these once, right after Ext.onReady 
Ext.util.Format.thousandSeparator = '.'; 
Ext.util.Format.decimalSeparator = ','; 

//Then this should work: 
Ext.util.Format.number(12345.67, '0,000.00'); //output 12.345,67 

또는 더 나은는 localization을 사용, 형식 언어 요구 사항에 따라 변경 될 수 있습니다.

사이드 노트 :

문서 작성 : (.) ​​

이 형식 문자열의 사양을 추가, 국제 전화 번호에 대한 영국/미국 그룹화 문자 (,)와 소수점을 사용하여 허용하려면/끝까지. 예를 들어 : 0.000,00/

그리고 나에 source code

// The "/i" suffix allows caller to use a locale-specific formatting string. 
// Clean the format string by removing all but numerals and the decimal separator. 
// Then split the format string into pre and post decimal segments according to *what* the 
// decimal separator is. If they are specifying "/i", they are using the local convention in the format string. 

의 주석에서 나는, 개발자가 특정 형식의 문자열 "0.000,00"를 사용할 수 있다는 것을 의미 것으로 보인다 주어진 수의 서식을 지정하고 이 아니므로 개발자는이 특정 서식 문자열을 사용하여 숫자를 원하는 서식으로 서식 지정할 수 있음을 의미합니다. 기본 구분자 설정을 변경해야합니다.

편집

데모 링크 : http://jsfiddle.net/chaoszcat/nbWwN/

+0

을 설정하십시오. 1000Separator 및 decimalSeparator가 이미 시도되었지만 결과가 없습니다. 현지화를 시도합니다! – Jom

+0

왜 작동하지 않습니까? 작동 중입니다. http://jsfiddle.net/chaoszcat/nbWwN/ –

+0

방금 ​​질문을 다시 읽었습니다. 그룹화를 위해 단 하나의 "도트"만 갖고 싶다는 뜻입니까? "12345475.394,49"? –

5

숫자 입력란에 사용자가 입력 한 값으로 작업 할 수 있습니다. 라이오넬은 지적

,이 필요 :

// set this once after Ext.onReady 
Ext.util.Format.thousandSeparator = '.'; 
Ext.util.Format.decimalSeparator = ','; 

그런 다음이에 처리기를 변경 :

decimalSeperator: ',' 
:

blur: function(field) { 
    field.setRawValue(Ext.util.Format.number(field.getValue(), '0.000,00/i')); 
} 

당신은 당신의 numberfield에이 설정을 포함도해야한다

사용자가 십진법 기호를 직접 입력 할 수 있습니다. 동작 예

Here

는 numberfield를 사용하여, 이러한 작업 바이올린이다. 사용자가 다시 편집 할 수 그것으로 돌아 가지 않습니다 다음 필드를 편집하고있는 경우

형식을 지원하지 않습니다 경고

Ext.form.field.Number의 말씀이 내가 위에서 준 blur 핸들러는 경우, 완전히 잘 작동합니다 그는 유효성을 검사하고 수천 개의 마커를 십진수로 수정하려고 시도 할 필드를 다시 초점을 맞 춥니 다.

이 필드를 사용하여 서버에 데이터를 다시 게시하면 표시되는 형식으로 천개의 분리자를 다시 보내고, 그 내용이 사용자의 의도인지 아닌지 나는 알 수 없습니다.

형식이 지정된 숫자를 원하면 위의 작업을 수행해야하지만 textfield으로해야합니다. 그렇게하면 소수를 소수로 재구성하지 않습니다.

숫자 필드 (스피너, 최소/최대 유효성 확인, 단계 증분 등)의 모든 기능을 원한다면 numberfield 클래스를 확장해야합니다. 이미 존재하는 here is a user extension이며 거의 필요한 것은 아니지만 통화 기호가 포함되어 있으므로이를 꺼내는 것이 상당히 쉽습니다.

+0

이 시도했지만 작동하지 않습니다! 로케일을 설정하려면 추가로 필요한 것이 있습니다. – Jom

+0

@ jomet 숫자 필드에 대해 작업하고 있습니다. 업데이트 된 예제 – Geronimo

관련 문제