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

Posted

技术标签:

【中文标题】如何在 extjs 中使用荷兰语格式格式化数字字段?【英文标题】:How to format numeric field using dutch format in extjs? 【发布时间】:2012-06-14 13:54:53 【问题描述】:

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

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

我想在模糊上格式化我的数字字段,上面的代码可以正常工作,但是 我的要求是获得这样的格式 - '000000.000,00'。 如何在 extjs 中做到这一点?

【问题讨论】:

【参考方案1】:

又快又脏,只需设置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,这样可以根据语言要求更改格式。 旁注:

文档写道:

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

来自source code中的cmets

// 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”来格式化给定的数字,而 not 意味着开发人员可以使用此特定格式字符串来将数字格式化为他们想要的格式。他们仍然需要更改默认分隔符设置。

编辑

演示链接:http://jsfiddle.net/chaoszcat/nbWwN/

【讨论】:

已经尝试设置千位分隔符和十进制分隔符,但没有结果。将尝试本地化! 我刚刚重新阅读了您的问题。您的意思是您只想使用单个“点”进行分组吗? “12345475.394,49”? 我希望千位运算符为 '.'和十进制分隔符为','。即 123.456.787,56 然后查看演示链接。它在那里 将检查我的具体代码,实际上我正在尝试在模糊事件中将用户在数字字段中输入的值转换为这种格式。【参考方案2】:

我现在可以为用户在数字字段中输入的值工作。

正如 Lionel 指出的那样,这是需要的:

// 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: ','

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

工作示例

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

一句警告

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

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

如果您只是想要格式化的数字,您应该按照上面的方法进行操作,但使用 textfield。这样它就不会将您的千位重新配置为小数。

如果您想要数字字段的所有功能(微调器、最小/最大验证、步长增量等),您将不得不考虑扩展 numberfield 类,here is a user extension 已经存在并且几乎正是您需要的,但它包含一个货币符号,很容易取出它。

【讨论】:

试过了,但是不行!设置语言环境需要任何额外的东西。 @jomet 我现在已经为数字字段工作了,请查看更新的示例

以上是关于如何在 extjs 中使用荷兰语格式格式化数字字段?的主要内容,如果未能解决你的问题,请参考以下文章

根据不同条件覆盖 ExtJs 4 中的日期字段格式

格式化 ExtJS 网格列

在 PySpark 中使用 to_date 在荷兰语中转换具有不同格式和月份缩写的日期字符串

Extjs 数字字段问题

如何在 Hadoop 中编写 HQL 表达式以验证特定格式的字母数字字段的格式,例如 X9999

ExtJs 数字字段使用千位分隔符