2012-06-12 2 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

еще одна вещь ... как я могу получить текст «unformatted» еще раз? Я хочу, чтобы я сохранил номер без знака € в базе данных, поэтому мне нужно обычное реальное число вместо строки с запятой –

+1

Я тоже ищу что-то подобное ... было бы неплохо узнать! – mariana

ответ

1

хорошо мое решение, без сомнения, некрасиво, но работает ... Я вроде быстро и грязно-то решение о парне я думаю: P

Перед форматированием введенного текста (при событии focusOut) Я просто заменяю запятую «,» на период «.». Так что форматер может делать свою магию и оставаться счастливой (думая, что она превратила период в запятую: D)

Вторая проблема была проще, я просто использовал встроенный метод parse formatter и дал мне значение атрибута ', который имеет значение как сохраненное число!
Проблема решена! спасибо за помощь, ребята!
ура!

1

должен был сделать это сам, и could'nt переопределить значение в классе CurrencyFormatter ... но вы можете поставить SharedResources в локальном каталоге, локали/en_US/SharedResources.properties и изменить/добавить decimalSeparator переменная со значением запятой.

Файл находится:

* C: \ Program Files (x86) \ Adobe \ Adobe Flash Builder 4.6 \ SDKs \ 4.6.0 \ рамки \ Projects \ Framework \ расслоения \ en_US \ SharedResources.properties *

, так что вы можете посмотреть на него, но вы хотите включить переопределение этого в проекте, и включить его в SWF-файле, который будет построен

1

вы должны использовать только форматировщик для целей дисплея, если вы хотите сохранить его оригинальное значение. Вам нужно расширить 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