Recentemente estava precisando validar se uma data é maior que a outra, então criei esta classezinha simples que estende a Validators, ela recebe duas datas e compara e primeira com a segunda, se a segunda não for maior que a primeira ela coloca a mensagem de erro na segunda, segue o código.
package com.wordpress.bobfernandes
{
import mx.validators.ValidationResult;
import mx.validators.Validator;public class SequenceDatesValidator extends Validator
{
// Define o Array para o retorno do doValidation().
private var results:Array;
public var errorMessage:String = ‘Sequencia de datas inválida’;
public var firstDate:Date = new Date();
public var secondDate:Date = new Date();// Construtor.
public function SequenceDatesValidator() {
// chama o construtor da Validator.
super();
}// Quando se estende a classe validator temos que sobreescrever essa função
override protected function doValidation(value:Object):Array {// Variáveis para guardar as datas
var smallerDate:Date = firstDate;
var biggerDate:Date = secondDate;// Zera o results Array.
results = [];// Chama o doValidation() da classe Validator.
results = super.doValidation(value);
// Damos um Return se tiver erros.
if (results.length > 0)
return results;// É aqui que fazemos a validação.
if (smallerDate.getTime() > biggerDate.getTime()) {
results.push(new ValidationResult(true, null, ‘invalidSequence’, errorMessage));
return results;
}
return results;
}
}
}
Na hora de usar é só inserir o seguinte:
<validators:SequenceDatesValidator id=”datesValidator”
errorMessage=”Data de retorno maior que data de saída”
source=”{IdDoCampoComADataQueDeveSerMaior}”
property=”selectedDate”
trigger=”{IdDoCampoComADataQueDeveSerMenor}”
triggerEvent=”change”
firstDate=”{IdDoCampoComADataQueDeveSerMenor.selectedDate}”
secondDate=”{IdDoCampoComADataQueDeveSerMaior.selectedDate}”/>
Essa mesma lógica pode ser usada para comparar outros dois campos, por exemplo quando temos que checar se dois campos de senha são iguais.