我有这种货币格式:
<s:CurrencyFormatter id="currencyFormatter" currencySymbol="€" useGrouping="true" groupingSeparator="." decimalSeparator="," fractionalDigits="2" useCurrencySymbol="true" locale="de-DE" />
一切正常,但问题是当我输入值“24,50”时,它不被接受。但如果我输入“24.50”,它将被接受并转换为“€24,50”
我需要能够以逗号作为小数分隔符输入货币。
有人可以帮忙吗?答案 0 :(得分: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中
答案 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',其值为存储的数字!
问题解决了!!谢谢你的帮助!
干杯!