我们如何在 Kendo 数字文本框中使用文化组大小来格式化货币?
How can we format a currency using culture group size in Kendo numeric text box?
我正在使用 Kendo numericTextBox 来显示货币。我需要根据所选货币格式化值。我能够为 "en-US" 和 "de-DE" 正确设置货币格式,但我无法正确设置货币格式,因为文化具有不同的组大小。
Kendo 博客中的所有示例和示例都在 "en-US" 和 "de-DE" 上,它们的组大小相似。
对于 "en-US" 货币 groupSize
属性 是 [3]
这意味着每个组将在 3 位数字后分开,例如1,000,000
。但是对于其他一些具有不同分组的文化,例如"en-IN" 'groupSize' 等于 [3,2,0]
,kendo 仍然将数字分组为 3 组:1,000,000
,而我们希望分组为 3 位数字然后是分隔符,然后是 2 位数字组等:10,00,000
。
谁能帮我解决这个问题?
所以问题是您使用的是未实现此功能的旧 KendoUI 版本。这是最新 kendo 版本的片段,它看起来与 en-IN
的行为不同:http://dojo.telerik.com/aqEwun
但是我不确定这是否正是它在这种文化中的工作方式,因为它只创建了 2 组数字,正如您在我的示例中看到的那样(从小数点分隔符来看,它是 2 组,3 组和其余数字)。
编辑:
因此,正如您提到的,您希望在示例中有不同的行为(从小数点开始,一组 3 位数字,然后是一组 2 位)。这似乎是一个错误,也许 telerik 有一天会修复它。在那之前,您可以将文化对象中的 groupSize
值从 [3, 2, 0] 更改为 [3, 2] 以实现您想要的。
要在所有链接的文化中全局修复它,您可以使用以下代码:
for(var i in kendo.cultures){
var culture = kendo.cultures[i];
if(JSON.stringify(culture.numberFormat.groupSize) === '[3,2,0]'){
culture.numberFormat.groupSize = [3, 2];
}
if(JSON.stringify(culture.numberFormat.currency.groupSize) === '[3,2,0]'){
culture.numberFormat.currency.groupSize = [3, 2];
}
if(JSON.stringify(culture.numberFormat.percent.groupSize) === '[3,2,0]'){
culture.numberFormat.percent.groupSize = [3, 2];
}
}
PS。您可以考虑使用比 JSON.stringify()
.
更好的数组比较函数
我正在使用 Kendo numericTextBox 来显示货币。我需要根据所选货币格式化值。我能够为 "en-US" 和 "de-DE" 正确设置货币格式,但我无法正确设置货币格式,因为文化具有不同的组大小。
Kendo 博客中的所有示例和示例都在 "en-US" 和 "de-DE" 上,它们的组大小相似。
对于 "en-US" 货币 groupSize
属性 是 [3]
这意味着每个组将在 3 位数字后分开,例如1,000,000
。但是对于其他一些具有不同分组的文化,例如"en-IN" 'groupSize' 等于 [3,2,0]
,kendo 仍然将数字分组为 3 组:1,000,000
,而我们希望分组为 3 位数字然后是分隔符,然后是 2 位数字组等:10,00,000
。
谁能帮我解决这个问题?
所以问题是您使用的是未实现此功能的旧 KendoUI 版本。这是最新 kendo 版本的片段,它看起来与 en-IN
的行为不同:http://dojo.telerik.com/aqEwun
但是我不确定这是否正是它在这种文化中的工作方式,因为它只创建了 2 组数字,正如您在我的示例中看到的那样(从小数点分隔符来看,它是 2 组,3 组和其余数字)。
编辑:
因此,正如您提到的,您希望在示例中有不同的行为(从小数点开始,一组 3 位数字,然后是一组 2 位)。这似乎是一个错误,也许 telerik 有一天会修复它。在那之前,您可以将文化对象中的 groupSize
值从 [3, 2, 0] 更改为 [3, 2] 以实现您想要的。
要在所有链接的文化中全局修复它,您可以使用以下代码:
for(var i in kendo.cultures){
var culture = kendo.cultures[i];
if(JSON.stringify(culture.numberFormat.groupSize) === '[3,2,0]'){
culture.numberFormat.groupSize = [3, 2];
}
if(JSON.stringify(culture.numberFormat.currency.groupSize) === '[3,2,0]'){
culture.numberFormat.currency.groupSize = [3, 2];
}
if(JSON.stringify(culture.numberFormat.percent.groupSize) === '[3,2,0]'){
culture.numberFormat.percent.groupSize = [3, 2];
}
}
PS。您可以考虑使用比 JSON.stringify()
.