4

ユーザーが入力した数値をオランダ語形式でフォーマットしたい。すなわち。として小数点区切り記号を使用し千単位区切り文字を として使用します。

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

ぼかしで数値フィールドをフォーマットしたいのですが、上記のコードは正常に機能しますが、私の要件は、「000000.000,00」のようなフォーマットを取得することです。extjsでこれを行う方法は?

4

2 に答える 2

8

すばやく汚い、とを設定するだけthousandSeparatorですdecimalSeparator。それは動作するはずです:

//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

または、ローカリゼーションを使用すると、言語要件に応じて形式を変更できます。

サイドノート:

ドキュメントには次のように書かれています。

英国/米国のグループ化文字(、)と国際番号の10進数(。)を使用してフォーマット文字列を指定できるようにするには、末尾に/iを追加します。例:0.000,00 / i

そして、ソースコードのコメントから

// 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/

于 2012-06-19T13:58:17.013 に答える
5

これは、ユーザーが数値フィールドに入力した値に対して機能するようになりました。

ライオネルが指摘したように、これが必要です:

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

次に、ハンドラーを次のように変更します。

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

また、numberfield にこの構成を含める必要があります。

decimalSeperator: ','

これにより、ユーザーは独自の小数点記号を入力できます。

実施例

これは、数値フィールドを使用した、これの実用的なフィドルです。

警告の言葉

Ext.form.field.Numberは書式設定をサポートしていませんblur。ユーザーがフィールドを編集し、再度編集するために戻ってこない場合、上記のハンドラーは完全に正常に機能します。フィールドに再度フォーカスすると、検証され、数千のマーカーを小数に修正しようとします。 .

このフィールドを使用してサーバーにデータを送信している場合、表示されている形式 (1000 単位の区切り文字) でデータが送信されますが、それが目的であったかどうかはわかりません。

単にフォーマットされた数値が必要な場合は、上記でやろうとしていることを実行する必要がありますが、textfield. そうすれば、千を小数として再構成しません。

数値フィールドのすべての機能 (スピナー、最小/最大検証、ステップ インクリメントなど) が必要な場合は、numberfieldクラスの拡張を検討する必要があります。これは、既に存在するユーザー拡張機能であり、必要なものとほぼ同じです。 、しかし通貨記号が含まれているので、それを取り出すのはかなり簡単です。

于 2012-06-18T20:39:01.293 に答える