Validando campos

2 views
Skip to first unread message

bruno bg

unread,
Apr 14, 2009, 11:11:14 AM4/14/09
to fle...@googlegroups.com
Pesquisei no google sobre validação e formatação de campos, encontrei alguns componentes prontos:
com.flexpernambuco.controls
e
CEPValidator.as
CNPJCPFValidator.as
TELValidator.as
com seus respectivos TextInputCEP.as, TextInputCNPJCPF.as e TextInputTEL.as
 
As bordas aparecem em vermelho e seus tooltips aparecem com as respectivas mensagens.
Pergunta:
 
como poderia acionar seus métodos "validator" antes de salvar o registro.
 
Pensei em fazer na mão campo a campo, mas isso ao longo do projeto acredito que seja inadequado.
Acredito que tenha alguma forma de acionar os "validator" de todos os campos que coloco como "required" ou "number", ou etc.
E eu fazer ser acionado antes de salvar.!!!!
 
Procurei no arquivos do próprio grupo e não achei nenhum arquivo/projeto que tivesse tal exemplo.
 
atenciosamente
bruno bg

 

Beck Novaes

unread,
Apr 14, 2009, 12:08:03 PM4/14/09
to flexdev
Você já tentou ver se poderia usar um dos eventos do validator como
"valid" ou "invalid"?

Att,
Beck Novaes

bruno bg

unread,
Apr 14, 2009, 12:26:47 PM4/14/09
to fle...@googlegroups.com
existe nos componentes as tags "validator" que pode ser string, number, cpf, email, tel, etc.
Até aê tudo bem. na execução aparece os tooltips mostrando que está errado e mostra tb quando eu coloco o campo
como required=true. Mostra ESTE CAMPO É OBRIGATÓRIO.
Dos campos formatados já aparecem no formato que eu defini.
 
Gostaria  de saber se tem como eu chamar os métodos para validar antes de salvar no Banco de Dados.
ou eu tenho que verificar campo a campo se está formatado do tipo definido e também
verificar campo a campo se aquele campo definido como required=true está null ou "". Antes de chamar o método de Salvar no Mysql.
 
 
bruno bg

2009/4/14 Beck Novaes <beck....@gmail.com>

José Carlos Silveira Fiel

unread,
Apr 14, 2009, 12:47:26 PM4/14/09
to fle...@googlegroups.com
Bruno eu uso como o exemplo abaixo, usando validators.
Se todos os validadores estiverem corretos ele entra no metodo _salvar() senão mostra os campos que ainda precisam ser preenchidos.
Abaixo coloquei algo bem simples, espero que tire uma ideia de como é feito. Não sei se é o que precisa, mas foi o que entendi.

// Script AS

[Bindable] private var _validatorArr:Array;

private function _init():void{
_validatorArr = new Array();
_validatorArr.push(svNome);
_validatorArr.push(svCep);
}

private function _validateForm():void{
var validatorErrorArray:Array = Validator.validateAll(_validatorArr);
        var isValidForm:Boolean = validatorErrorArray.length == 0;
        if (isValidForm) {
            _salvar();
        } else {
            var err:ValidationResultEvent;
            var errorMessageArray:Array = [];
            for each (err in validatorErrorArray) {
                var errField:String = FormItem(err.currentTarget.source.parent).label
                errorMessageArray.push(errField + " " + err.message);
            }
                Alert.show(errorMessageArray.join("\n\n"), "Atenção!");
            }
}

<!-- MXML -->
<mx:StringValidator id="svNome" source="{tiNome}" property="text" />
<mx:StringValidator id="svCep" source="{tiCep}" property="text" minLength="8" tooShortError="Digite um CEP válido!" />

<mx:FormItem label="Nome:" width="100%" required="true">
<mx:TextInput id="tiNome" width="250" maxChars="200" />
</mx:FormItem>
<mx:FormItem label="CEP:" width="100%" required="true">
<mx:TextInput id="tiCep" width="250" maxChars="8" restrict="0-9" />
</mx:FormItem>

Abraços,
José Carlos Silveira Fiel

2009/4/14 bruno bg <brun...@ig.com.br>

Beck Novaes

unread,
Apr 14, 2009, 1:21:57 PM4/14/09
to flexdev
O exemplo do nosso amigo José Carlos deve resolver o seu problema. O
trecho de código abaixo apenas elimina a necessidade de tratar um
evento de inicialização da aplicação para adicionar os Validators na
array.

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">

<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.validators.Validator;

private function submitClickHandler(event:MouseEvent):void
{
var validationResultEvents:Array = Validator.validateAll
(validators);

if (validationResultEvents.length == 0)
{
Alert.show("There are no errors!");
}
else
{
Alert.show("There are errors!");
}
}

]]>
</mx:Script>

<mx:Array id="validators">
<mx:StringValidator minLength="3" source="{userName}"
property="text"/>
<mx:EmailValidator source="{email}" property="text"/>
</mx:Array>

<mx:Form>

<mx:FormItem label="Name:">
<mx:TextInput id="userName"/>
</mx:FormItem>

<mx:FormItem label="Email:">
<mx:TextInput id="email"/>
</mx:FormItem>

<mx:FormItem>
<mx:Button label="Submit" click="submitClickHandler(event)"/>
</mx:FormItem>

</mx:Form>

</mx:Application>

Att,
Beck Novaes
> 2009/4/14 bruno bg <bruno...@ig.com.br>
>
> > existe nos componentes as tags "validator" que pode ser string, number,
> > cpf, email, tel, etc.
> > Até aê tudo bem. na execução aparece os tooltips mostrando que está errado
> > e mostra tb quando eu coloco o campo
> > como required=true. Mostra ESTE CAMPO É OBRIGATÓRIO.
> > Dos campos formatados já aparecem no formato que eu defini.
>
> > Gostaria  de saber se tem como eu chamar os métodos para validar antes de
> > salvar no Banco de Dados.
> > ou eu tenho que verificar campo a campo se está formatado do tipo definido
> > e também
> > verificar campo a campo se aquele campo definido como required=true está
> > null ou "". Antes de chamar o método de Salvar no Mysql.
>
> > bruno bg
>
> > 2009/4/14 Beck Novaes <beck.nov...@gmail.com>

José Carlos Silveira Fiel

unread,
Apr 14, 2009, 1:27:39 PM4/14/09
to fle...@googlegroups.com
Valeu pela dica Beck,

Att.,
José Carlos Silveira Fiel

2009/4/14 Beck Novaes <beck....@gmail.com>

Stefan Horochovec

unread,
Apr 15, 2009, 10:13:12 AM4/15/09
to fle...@googlegroups.com
Eu criei o validator dentro do TextInput em um componente que eu fiz...

Usando uma propriedade "Obrigatorio (true/false)" ele implementa o validador de acordo com o tipo de campo (alfa, numerico ou alfa-numerico)"...

Abracos

Stefan Horochovec
Analista de Sistemas
Blog: http://www.horochovec.com.br/
Use Java, Flex e Linux

2009/4/14 José Carlos Silveira Fiel <zek...@gmail.com>



--

Reply all
Reply to author
Forward
0 new messages