如何在Kendo数字文本框中使用文化组大小格式化货币?

时间:2017-02-20 16:52:43

标签: kendo-ui currency-formatting kendonumerictextbox

我使用Kendo numericTextBox来显示货币。我需要根据所选货币格式化值。我能够为“en-US”和“de-DE”正确格式化货币,但我无法正确格式化货币,因为文化具有不同的组大小。

剑道博客中的所有示例和示例都在“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

1 个答案:

答案 0 :(得分:0)

所以问题是你在没有实现这个功能的情况下使用旧的KendoUI版本。这是一个包含最新剑道版本的代码段,它看起来与en-IN的行为不同:http://dojo.telerik.com/aqEwun

但是我不确定这是否真的在这种文化中是如何运作的,因为它只创建了2组数字,你可以在我的例子中看到(从小数点分隔符它是2组,3组和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