我想格式化用户以荷兰语格式输入的数字。即。使用小数分隔符作为,和千位分隔符作为。
blur: function () {
Ext.util.Format.number(this.value, '000,000.00')
}
我想在模糊上格式化我的数字字段,上面的代码工作正常,但是 我的要求是获得这样的格式 - '000000.000,00'。 如何在extjs中执行此操作?
答案 0 :(得分: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
甚至更好,使用localization,因此可以根据语言要求更改格式。
旁注:
文档写道:
中的评论要允许使用英国/美国分组字符(,)和小数(。)来指定格式化字符串,请将/ 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”来格式化给定数字,而不意味着开发人员可以使用此特定格式字符串来将数字格式化为他们想要的格式。他们仍然需要更改默认的分隔符设置。
修改强>
答案 1 :(得分:5)
我现在可以在数字字段中使用用户输入的值。
正如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这几乎就是你所需要的,但它包含一个货币符号,这样就很容易理解。