Apache flex Flex 4中带欧元的CurrencyFormatter

Apache flex Flex 4中带欧元的CurrencyFormatter,apache-flex,flex4.5,currency-formatting,Apache Flex,Flex4.5,Currency Formatting,我有一个currencyFormatter: <s:CurrencyFormatter id="currencyFormatter" currencySymbol="€" useGrouping="true" groupingSeparator="." decimalSeparator="," fractionalDigits="2" useCurrencySymbol="true" locale="de-DE" /> 一切正常,但问题是当我输入值“24,50”时,它不被接

我有一个currencyFormatter:

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

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

我需要能够以逗号作为十进制分隔符输入货币


有人能帮忙吗?

必须自己做,而且不能重写CurrencyFormatter类中的值。。。但您可以将SharedResources放入本地目录,locale/en_US/SharedResources.properties,并更改/添加值为逗号的小数分隔符

该文件位于:

*C:\Program Files(x86)\Adobe\Adobe Flash Builder 4.6\SDK\4.6.0\framework\projects\framework\bundles\en\u US\SharedResources.properties*


因此,您可以查看它,但您希望在项目中包含对此的重写,并将其包含在生成的swf中

如果您希望保留其原始值,则只应将格式化程序用于显示目的。您需要扩展spark.formatters.CurrencyFormatter并重写format函数以接受逗号,因为传入函数的值被转换为数字,然后被确定为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);
    }
}

}

我的解决方案,毫无疑问很难看,但很有效。。。我想我是那种快速而肮脏的人:P

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

第二个问题更简单,我只是使用了formatter的内置解析方法,它给了我一个属性“value”,该属性的值存储为一个数字
问题解决了!!谢谢你们的帮助,伙计们

干杯

还有一件事。。。如何再次获取文本“未格式化”?我的意思是,我想在数据库中保存没有欧元符号的数字,所以我需要一个常规实数,而不是逗号分隔的字符串。我也在寻找类似的东西。。。很高兴能找到答案!