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

まあ私の解決策、間違いなく醜いですが、うまくいきます...私は一種の迅速で汚い解決策だと思います:P

入力したテキストをフォーマットする前に (focusOut イベントで)、コンマ "," をピリオド "." に置き換えるだけです。したがって、フォーマッタはその魔法を実行して幸せを保つことができます(ピリオドをコンマに変換したと思います:D)

2番目の問題は簡単でした.フォーマッタの組み込みの解析メソッドを使用しただけで、値が数値として格納された属性「値」が得られました!
問題が解決しました!!助けてくれてありがとう!
乾杯!

于 2012-06-13T16:22:12.107 に答える
1

これを自分で行う必要があり、CurrencyFormatter クラスの値をオーバーライドできませんでした...しかし、ローカル ディレクトリlocale/en_US/SharedResources.propertiesに SharedResources を配置し、値を持つ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

元の値を保持したい場合は、表示目的でのみフォーマッターを使用する必要があります。関数に渡される値は数値としてキャストされ、NaN であると判断されるため、spark.formatters.CurrencyFormatter を拡張し、カンマを受け入れるように format 関数をオーバーライドする必要があります。

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 に答える