2012-06-12 23 views
2

歐元我有此CurrencyFormatter:的CurrencyFormatter中的Flex 4

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

一切都運行得很好,但問題是,當我輸入一個值「24,50」這是不能接受的。但如果我輸入「24.50」它被接受並轉換爲「€24,50」

我需要能夠用逗號作爲小數點分隔符輸入貨幣。

有人可以幫忙嗎?

+1

還有一件事...我如何再次獲得文本「無格式」?我的意思是我想在數據庫中保存沒有歐元符號的號碼,所以我需要一個普通的實數而不是逗號分隔的字符串 –

+1

我也在尋找類似的東西......這將很高興找到! – mariana

回答

1

以及我的解決方案,無疑是醜陋的,但工程......我有種快速和骯髒的解決方案不大不小的人,我猜的:P

格式化輸入的文本之前(在focusOut事件)我只需用逗號「。」替換逗號「,」。所以格式化程序可以發揮它的魔力並保持高興(認爲它將句點轉換爲逗號:D)

第二個問題比較容易,我只是使用格式化程序的內置分析方法,它給了我一個屬性值'它具有存儲數字的價值!
問題解決!謝謝你的幫助!
乾杯!

1

不得不做這自己,could'nt覆蓋在CurrencyFormatter類的價值......但你可以把一個SharedResources在本地目錄,區域/ EN_US/SharedResources.properties,變/添加decimalSeparator變量的值爲逗號。

文件所在:

* C:\ Program Files文件(x86)的\的Adobe \的Adobe Flash Builder的4.6 \ SDK的\ 4.6.0 \框架\項目\框架\包\ EN_US \ SharedResources.properties *

所以你可以看看它,但你將要包括的這一個覆蓋在您的項目,包括它在被內置

1

你應該只使用用於顯示目的,如果格式化的SWF你想保留它的原始價值。您需要擴展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); 
    } 
} 

}

+0

如果這個工作,然後好帖子 – Ryan