Apache flex Flex 4中带欧元的CurrencyFormatter
我有一个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”时,它不被接
<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”,该属性的值存储为一个数字
问题解决了!!谢谢你们的帮助,伙计们
干杯 还有一件事。。。如何再次获取文本“未格式化”?我的意思是,我想在数据库中保存没有欧元符号的数字,所以我需要一个常规实数,而不是逗号分隔的字符串。我也在寻找类似的东西。。。很高兴能找到答案!