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
-~----------~----~----~----~------~----~------~--~---