我们如何在 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

谁能帮我解决这个问题?

这是我的代码示例:http://dojo.telerik.com/@jayesh-jayakumar/AtojA/8

所以问题是您使用的是未实现此功能的旧 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().

更好的数组比较函数

更新的代码段:http://dojo.telerik.com/aqEwun/3