Flex 4中的CurrencyFormatter与欧元

时间:2012-06-12 16:52:22

标签: flex flex4.5 currency-formatting

我有这种货币格式:

<s:CurrencyFormatter id="currencyFormatter" currencySymbol="€"  useGrouping="true"  groupingSeparator="." decimalSeparator="," fractionalDigits="2" useCurrencySymbol="true" locale="de-DE" />

一切正常,但问题是当我输入值“24,50”时,它不被接受。但如果我输入“24.50”,它将被接受并转换为“€24,50”

我需要能够以逗号作为小数分隔符输入货币。

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:1)

我必须自己做,并且不能覆盖CurrencyFormatter类中的值...但是您可以将SharedResources放在本地目录中, locale / en_US / SharedResources.properties ,并使用逗号值更改/添加 decimalSeparator 变量。

该文件位于:

* C:\ Program Files(x86)\ Adob​​e \ Adob​​e Flash Builder 4.6 \ sdks \ 4.6.0 \ frameworks \ projects \ framework \ bundles \ en_US \ SharedResources.properties *

所以你可以查看它,但是你想要在你的项目中包含它的覆盖,并将它包含在构建的swf中

答案 1 :(得分:1)

如果要保留原始值,则只应将格式化程序用于显示目的。您需要扩展spark.formatters.CurrencyFormatter并覆盖format函数以接受逗号,因为传递给函数的值被强制转换为Number,然后确定为NaN。

package

{

import spark.formatters.CurrencyFormatter;

public class MyCurrencyFormatter extends CurrencyFormatter
{
    public function MyCurrencyFormatter()
    {
        super();
    }
    override public function format(value:Object):String{
        var target:Object = value;
        if(target is String){
            //whatever conversion logic you need
            target = String(target).replace(",",".");
        }
        return super.format(target);
    }
}

}

答案 2 :(得分:1)

我的解决方案,毫无疑问是丑陋的,但是有效......我觉得我有点快速而又肮脏的解决方案:P

在格式化输入的文本之前(在focusOut事件中)我只需用逗号“。”替换逗号“,”。因此,格式化程序可以发挥其魔力并保持快乐(认为它将句点转换为逗号:D)

第二个问题更简单,我只是使用了格式化程序的内置解析方法,它给了我一个属性'value',其值为存储的数字!
问题解决了!!谢谢你的帮助! 干杯!