Uma forma mais elegante seria:

if(meuForm.validate()){
  // salva no banco
}

Não tem algo assim ?
Dessa forma seria chamado a função só depois de tudo validado no form.
A respeito das mensagens, quando colocado o campo como 'required' e os
validadores, após uma ação os campos ficam em destaque (vermelho) e ao
posicionar o mouse mostra o erro, apesar que mostra em inglês, mas já é uma
opção.

Um exemplo que encontrei agora e não testei é o exemplo do link abaixo, que
está no final da página.

http://livedocs.adobe.com/flex/2/langref/mx/validators/Validator.html

Talvez ajude também.

[]'s
mindu


On 3/20/07, Beck Novaes <[EMAIL PROTECTED]> wrote:
>
>
> 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