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