Certamente ajuda Beck!

  assim que der vou tentar fazer um "manager" de validadores e posto aqui.
  falando nisso eu lembrei de um post lá na FlexComponents que falava 
desse assunto, mas na época eu mal conseguia entender o que era 
mx:Application e acabei deixando pra la.
  o link é este:  
http://www.mail-archive.com/[email protected]/msg00477.html
  Peter Martin fez um componente pra agrupar validadores e parece 
interessante. Ta em anexo no final do link.

  de qualquer forma, muito obrigado pela ajuda!

  grande abraço,

          Luís Eduardo.




Beck Novaes escreveu:

>Bem... para resolver o problema da validação ser disparada sempre que
>o componente perde o foco você pode usar a propriedade "triggerEvent"
>definindo-a como "" (string vazia):
>
><mx:StringValidator id="valDtIni"
>    invalid="Alert.show('Campo COTAÇÃO/DATA INÍCIO não preenche os
>requisitos'" triggerEvent=""
>    required="true" source="{dtIniC}"
>    property="text" />
>
>Mas agora eu começo a questionar se esta solução realmente limpa. Só
>pensando um pouquinho melhor para ter uma conclusão mais segura. De
>qualquer forma, só fato de eliminar os "ifs" já ajuda.
>
>[]'s
>Beck Novaes
>
>On 20 mar, 08:31, Luís Eduardo <[EMAIL PROTECTED]> wrote:
>  
>
>>  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
-~----------~----~----~----~------~----~------~--~---

Responder a