ユーザーが入力した数値をオランダ語形式でフォーマットしたい。すなわち。として小数点区切り記号を使用し、千単位区切り文字を として使用します。
blur: function () {
Ext.util.Format.number(this.value, '000,000.00')
}
ぼかしで数値フィールドをフォーマットしたいのですが、上記のコードは正常に機能しますが、私の要件は、「000000.000,00」のようなフォーマットを取得することです。extjsでこれを行う方法は?
ユーザーが入力した数値をオランダ語形式でフォーマットしたい。すなわち。として小数点区切り記号を使用し、千単位区切り文字を として使用します。
blur: function () {
Ext.util.Format.number(this.value, '000,000.00')
}
ぼかしで数値フィールドをフォーマットしたいのですが、上記のコードは正常に機能しますが、私の要件は、「000000.000,00」のようなフォーマットを取得することです。extjsでこれを行う方法は?
すばやく汚い、とを設定するだけ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/
これは、ユーザーが数値フィールドに入力した値に対して機能するようになりました。
ライオネルが指摘したように、これが必要です:
// 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
クラスの拡張を検討する必要があります。これは、既に存在するユーザー拡張機能であり、必要なものとほぼ同じです。 、しかし通貨記号が含まれているので、それを取り出すのはかなり簡単です。