Formatting 如何在extjs中使用荷兰格式格式化数字字段?

Formatting 如何在extjs中使用荷兰格式格式化数字字段?,formatting,numbers,extjs4,extjs4.1,Formatting,Numbers,Extjs4,Extjs4.1,我想将用户输入的数字格式化为荷兰语格式。即,使用小数分隔符作为,和千分隔符作为, blur: function () { Ext.util.Format.number(this.value, '000,000.00') } 我想在模糊上格式化我的数字字段,上面的代码工作正常,但是 我的要求是得到这样的格式——“000000.000,00”。 如何在extjs中实现这一点?现在,我在一个数字字段中为用户输入的值提供了这一功能 正如莱昂内尔指出的,这是必要的: // set this onc

我想将用户输入的数字格式化为荷兰语格式。即,使用小数分隔符作为和千分隔符作为

blur: function () {
   Ext.util.Format.number(this.value, '000,000.00')
}
我想在模糊上格式化我的数字字段,上面的代码工作正常,但是 我的要求是得到这样的格式——“000000.000,00”。
如何在extjs中实现这一点?

现在,我在一个数字字段中为用户输入的值提供了这一功能

正如莱昂内尔指出的,这是必要的:

// 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'));
}
您还应在数字字段中包含此配置:

decimalSeperator: ','
它将允许用户输入自己的十进制符号

工作示例

这是一个工作小提琴,使用数字字段

一句警告

Ext.form.field.Number
不支持格式化,如果用户编辑该字段,然后不再返回该字段进行编辑,则上面提供的
blur
处理程序将完全正常工作,如果用户重新聚焦该字段,它将验证并尝试将数千个标记更正为小数

如果您使用此字段将数据发送回服务器,它将以显示的格式(使用千个分隔符)将数据发送回服务器,我不知道您是否打算这样做

如果你只是想要格式化的数字,你应该像上面那样做,但要使用
textfield
。这样它就不会将你的千重新配置为小数


如果您想要numberfield的所有功能(微调器、最小/最大验证、步长增量等),您必须考虑扩展
numberfield
类,该类已经存在,并且几乎正是您所需要的,但它包含一个货币符号,将其去掉相当容易。

快速且肮脏,只需设置和。它应该在以下方面发挥作用:

//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
或者更好的方法是使用,这样可以根据语言要求更改格式。

旁注:

文件写道:

要允许使用英国/美国分组字符(,)和十进制(.)为国际数字指定格式化字符串,请在末尾添加/i。例如:0.000,00/i

从评论中

对我来说,这似乎意味着开发人员可以使用特定格式字符串“0.000,00”来格式化给定的数字,而不是意味着开发人员可以使用此特定格式字符串将数字格式化为他们想要的格式。他们仍然需要更改默认分隔符设置

编辑


演示链接:

尝试过这个,但不起作用!设置区域设置还需要其他任何内容。@jomet我现在已经将其用于数字字段,请参阅更新的示例setting TounandSeparator和decimalSeparator已经尝试过,但没有结果。将尝试本地化!我只是重读了你的问题。你的意思是你只想用一个“点”来分组吗?“12345475.394,49”?我希望千位分隔符为“.”,十进制分隔符为“,”。ie 123.456.787,56然后检查演示链接。它将检查我的特定代码,实际上我正在尝试在模糊事件中将用户在数字字段中输入的值转换为这种格式。
// 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.