Daew pessoal blz,
Hoje estarei trazendo um fast code para Flex.
O codigo abaixo ensina como formatar moedas para o padrão brasileiro.
package validadores{
import mx.validators.NumberValidator;
public class ValidFloatBrasileiro extends NumberValidator {
//este validador validara a faixa de min e max value
//pois existe um BUG em NumberValidator, que nao consegue validar um numero em formato brasileiro
private var validadorRangeNumero:NumberValidator;
//indica uma string que mesmo nao sendo numero nao gerara msg de erro de validacao
public var textoValido:String;
public function ValidFloatBrasileiro() {
super();
this.decimalSeparator = ",";
this.thousandsSeparator = ".";
this.requiredFieldError = "Este campo é obrigatório!";
this.decimalPointCountError = "O ponto decimal só pode ocorrer uma vez";
this.exceedsMaxError = "O número informado é maior que o máximo permitido.";
this.integerError = "O número deve ser inteiro.";
this.invalidCharError = "O campo possui caracteres inválidos (não numéricos).";
this.lowerThanMinError = "O número informado é menor que o mánimo permitido.";
this.negativeError = "O número deve ser maior do que 0.";
this.precisionError = "O número possui mais casas decimais do que o máximo permitido.";
this.separationError = "O separador de milhar deve ser seguido de trás dígitos.";
this.validadorRangeNumero = new NumberValidator();
this.validadorRangeNumero.requiredFieldError = "Este campo é obrigatório!";
this.validadorRangeNumero.decimalPointCountError = "O ponto decimal só pode ocorrer uma vez";
this.validadorRangeNumero.exceedsMaxError = "O número informado é maior que o máximo permitido.";
this.validadorRangeNumero.integerError = "O número deve ser inteiro.";
this.validadorRangeNumero.invalidCharError = "O campo possui caracteres inválidos (não numéricos).";
this.validadorRangeNumero.lowerThanMinError = "O número informado é menor que o mánimo permitido.";
this.validadorRangeNumero.negativeError = "O número deve ser maior do que 0.";
this.validadorRangeNumero.precisionError = "O número possui mais casas decimais do que o máximo permitido.";
this.validadorRangeNumero.separationError = "O separador de milhar deve ser seguido de trás dígitos.";
}
/**
* Valida um numero em formato brasileiro e
* retorna uma Array de ValidationResult.
*
* @param Object value
* @return Array
*/
override protected function doValidation(value:Object):Array {
if (textoValido != "" && value == this.textoValido)
return new Array();
//primeiro faz as validacoes de formato...
var resposta:Array = super.doValidation(value);
if (resposta != null && resposta.length > 0) {
//se nao deu problema na validacao acima
//deve transformar o numero no padrao americano, para poder testar o min e max value
this.validadorRangeNumero.minValue = this.minValue;
this.validadorRangeNumero.maxValue = this.maxValue;
this.validadorRangeNumero.allowNegative = this.allowNegative;
this.validadorRangeNumero.domain = this.domain;
this.validadorRangeNumero.precision = this.precision;
var numeroIngles:String;
if (value is String) {
numeroIngles = (value as String).replace(".", "?");
numeroIngles = numeroIngles.replace(",", ".");
numeroIngles = numeroIngles.replace("?", ",");
var results:Array = this.validadorRangeNumero.validate(numeroIngles).results;
if (FuncoesArray.naoEstaVazio(results))
resposta = resposta.concat( results );
}
}
return resposta;
}
}
}