Pois é Beck, eu tb tinha pensado em algo do tipo.
Mas o problema dessa abordagem é que o evento "invalid" é disparado
sempre que o componente source dele perde o foco. Isso faz a usabilidade
ficar meio prejudicada pq pipoca um Alert muito fácil na tela... e o
usuário não consegue sair do componente onde ele está nem por reza
braba. Eu acho q fica menos "intrusivo", por assim dizer, se as
validações ocorressem só quando o usuário, explicitamente, requisitar um
erro. (tipo mandar gravar sem preencher um capo obrigatório).
Uma coisa esquisita tb, é que parecem estar sendo gerados 3 eventos
pra validação da data, usando essa tecnica de colocar o alert dentro do
invalid, puro e simplesmente.
Se desse pra desabilitar o alert durante o curso normal da tela mas
deixar ele aparecer quando o botão do Enviar fosse pressionado, aí sim,
funcionaria sem os IFs e mesmo assim o balão vermelho apareceria
normalmente no form...
fiz aqui um teste (POG) enquanto estava escrevendo esse email e
funcionou direitinho...mas ficou um resultado feio e ainda usa um IF pra
cada validator.
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
width="100%" height="100%"
xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Form>
<mx:FormItem label="Nome" required="true">
<mx:TextInput id="edtNome" width="200"/>
</mx:FormItem>
<mx:FormItem label="Data Nascimento" required="true">
<mx:DateField id="dtNascimento" width="200" editable="true"/>
</mx:FormItem>
</mx:Form>
<mx:Button label="Enviar" click="doEnviar()" />
<mx:Array id="valArray">
<mx:StringValidator id="valNome" source="{edtNome}"
invalid="if (podeMostrar) Alert.show('Campo NOME não
preenche os requisitos')"
required="true" property="text"/>
<mx:StringValidator id="valDt" source="{dtNascimento}"
invalid="if (podeMostrar) Alert.show('Campo DATA NASCIMENTO
não preenche os requisitos')"
required="true" property="text"/>
</mx:Array>
<mx:Script>
<![CDATA[
import mx.validators.Validator;
import mx.controls.Alert;
private var podeMostrar:Boolean = false;
private function doEnviar():void {
podeMostrar = true;
if (Validator.validateAll(valArray).length > 0 ) {
// foi um bom menino, pode seguir.
}
podeMostrar = false;
}
]]>
</mx:Script>
</mx:Application>
agora fiquei na dúvida qual dos dois jeitos é o menos estranho...
um abraço,
Luís Eduardo.
Beck Novaes escreveu:
>Well, uma maneira de eliminar os ifs seria trabalhando com os eventos
>dos validadores. Algo do tipo:
>
> <mx:StringValidator id="valDtIni"
> invalid="Alert.show('Campo COTAÇÃO/DATA INÍCIO não preenche os
>requisitos'"
> required="true" source="{dtIniC}"
> property="text" />
>
> <mx:StringValidator id="valDtFim"
> invalid="Alert.show('Campo COTAÇÃO/DATA TÉRMINO não preenche os
>requisitos'"
> required="true" source="{dtFimC}"
> property="text" />
>
>[]'s
>Beck Novaes
>
>On 19 mar, 11:26, Luís Eduardo <[EMAIL PROTECTED]> wrote:
>
>
>> mindu, aqui eu estou fazendo assim:
>>
>> declaração do mxml:
>><mx:StringValidator id="valDtIni" required="true" source="{dtIniC}"
>>property="text" />
>><mx:StringValidator id="valDtFim" required="true" source="{dtFimC}"
>>property="text" />
>>
>>na "função do AS", eu faço assim:
>>
>>private function funcaoDoAS():void {
>>if ( valDtIni.validate().type == ValidationResultEvent.INVALID ) {
>>Alert.show("Campo COTAÇÃO/DATA INÍCIO não preenche os requisitos
>>necessários.", "Atenção");}
>>
>>else if ( valDtFim.validate().type == ValidationResultEvent.INVALID ) {
>>Alert.show("Campo COTAÇÃO/DATA TÉRMINO não preenche os requisitos
>>necessários.", "Atenção");}
>>
>>else {
>> livre pra fazer o que deve ser feito. ( parece frase de filme de
>>charles bronson) :)
>>
>>}
>>}
>>
>>butt, eu não sei se assim é o melhor jeito. (Só sei que funciona redondo).
>>
>> se mesmo assim não funfar, manda um trecho do teu código que aí fica
>>mais claro.
>>
>> se alguém souber de um jeito mais "limpo", com mais estilo e/ou
>>reusável, seria ótimo ouvir a respeito... pq num formulario, as vezes é
>>preciso um monte de validações e fica esse monte de if - else
>>aninhado... será que assim é o melhor jeito mesmo???
>>
>> abraços,
>>
>> Luís Eduardo.
>>
>>mindu escreveu:
>>
>>
>>
>>>Olá Pessoal,
>>>Gostaria de saber como funciona a validação de formulário ?
>>>Criei um exemplo, coloquei alguns campos como 'required', acrescentei
>>>os validadores para String e Email, acrescentei também um botão
>>>chamando um função do AS.
>>>Só que mesmo não preenchendo os campos obrigatórios, a função do botão
>>>executada, os campos ficam em vermelho, mas a função é executada.
>>>
>>>
>>>Tem como configurar para executar o método somente depois de todos os
>>>campos validado ?
>>>
>>>
>>>[]'s
>>>mindu
>>>
>>>
>
>
>>
>
>
>
--~--~---------~--~----~------------~-------~--~----~
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para [EMAIL PROTECTED]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
-~----------~----~----~----~------~----~------~--~---