2

我有这个 currencyFormatter :

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

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

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

有人可以帮忙吗?

4

3 回答 3

1

必须自己执行此操作,并且无法覆盖 CurrencyFormatter 类中的值...但是您可以将 SharedResources 放在本地目录locale/en_US/SharedResources.properties中,并更改/添加值为的decimalSeparator变量逗号。

该文件位于:

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

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

于 2012-06-13T10:54:48.113 回答
1

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

package

{

导入 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);
    }
}

}

于 2012-06-13T12:58:05.870 回答
1

好吧,我的解决方案,无疑是丑陋的,但有效......我猜我是一种快速而肮脏的解决方案:P

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

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

于 2012-06-13T16:22:12.107 回答