Hmmm...a pedida me parece boa, mas apesar do código ficar um pouco
(bem pouco) mais legível, o trabalho que vou ter pra fazer funcionar com
o validateAll está parecendo ser maior do que o outro jeito não? e com
ifs aninhados ainda... (pra ver quem falhou e qual msg sai no alert.)
fiz esse pequeno teste para garantir que não estou entendendo nada
errado...
<?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}"
required="true" property="text"/>
<mx:StringValidator id="valDt" source="{dtNascimento}"
required="true" property="text"/>
</mx:Array>
<mx:Script>
<![CDATA[
import mx.validators.Validator;
import mx.controls.Alert;
private function doEnviar():void {
if (Validator.validateAll(valArray).length > 0 ) {
//if ???
}
}
]]>
</mx:Script>
</mx:Application>
bem ali onde o IF comentado está, creio que deva ter um FOR (ou
WHILE) para iterar o vetor de objetos de retorno, uma vez que se não
falhar, não virá uma entrada no array, então perco a indexação..
dentro do FOR eu teria que ter os danados dos IFs aninhados, *do mesmo
jeito que estavam antes*, para poder jogar na tela uma msg dizendo qual
foi o campo que falhou..
é isso mesmo???? (coçando a cabeça aqui)
uma alternativa que imaginei aqui agora é que poderia fazer uma
extensão do validator e colocar nele uma variável texto que seria jogada
junto a uma extensão do evento retornado quando falhar... de forma que
seria só o caso de pegar o primeiro item do array de retorno e jogar o
texto no Alert... mas me parece uma maneira não muito saudável de se
fazer esse Neston. :) (hehehe adorei aquela).
que que eu não entendi????
abraços,
Luís Eduardo.
Fabio Terracini escreveu:
>Que tal um Validator.validateAll(....) ?
>
>[]s
>Fabio
>
>
>On 3/19/07, 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
-~----------~----~----~----~------~----~------~--~---