如何在 extjs 中使用荷兰语格式格式化数值字段



我想用荷兰语格式格式化用户输入的数字。 即使用十进制分隔符作为 使用千位分隔符作为

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

我想在模糊上格式化我的数字字段,上面的代码工作正常,但是我的要求是获得这样的格式 - '000000.000,00'。如何在 extjs 中执行此操作?

又快又脏,只需设置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

或者更好的是,使用本地化,因此可以根据语言要求更改格式。

旁注:

文档写道:

若要允许对国际数字使用英式/美国分组字符 (,) 和十进制 (.) 来指定格式字符串,请在末尾添加/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'));
}

您还应该在数字字段中包含此配置:

decimalSeperator: ','

它将允许用户输入自己的十进制符号。

工作示例

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

一句警告

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

如果您使用此字段将数据发布回服务器,它将以显示的格式(带有千位分隔符)将其发送回,我不知道这是否是您想要的。

如果您只是想要格式化的数字,您应该执行上面尝试执行的操作,但要textfield。这样它就不会将您的千位重新配置为小数位数。

如果你想要一个数字字段的所有功能(微调器、最小/最大验证、步长增量等),你将不得不看看扩展numberfield类,这是一个已经存在的用户扩展,它几乎正是你需要的,但它包括一个货币符号,把它拿出来会相当容易。

最新更新