Validando E-mail no Flex

Com certeza esta é o pior trabalho que temos em qualquer linguagem, porém a unica forma que tem de saber se o e-mail é válido é enviando um e-mail e pedindo confirmação.

Mais quando esta fase não é tão importante, podemos criar um bom validador de e-mail que pelo menos faz com que o usuário digite um e-mail que seje válido.

Para podermos valida-lo de forma fácil criei uma variável booleana, publica que recebe o status atual do TextInput. Também criamos um MetaData para registrarmos o Evento changed. Assim podemos chamar este evento diretamente no MXML do TextInputEmail.

Arquivo br/mx/controls/TextInputEmail.mxml
<mx:Script>
    <![CDATA[
        import mx.validators.EmailValidator;
        import mx.events.ValidationResultEvent;

        [Bindable] public var isValid:Boolean = false;

        private function inputChanged(event:Event):void
        {
            //Verifica se esta válido
            var validationEvent:ValidationResultEvent = emailValidator.validate(null, true); 

            // Define o Status atual do Email
            isValid = (validationEvent.type == ValidationResultEvent.VALID);
            dispatchEvent(new Event("changed"));
        }
    ]]>
</mx:Script>
<mx:Metadata>
    [Event(name="changed", type="flash.events.Event")]
</mx:Metadata>

Agora podemos chamar este componente na aplicação, e usar as novas propriedades que criamos no componente. Com estas novas propriedades, podemos fazer com que o Botão Enviar seje habilitado somente apenas quando todos os campos estiverem preenchidos.

arquivo main.mxml
<mx:Script>
    <![CDATA[
        import mx.controls.Alert;
        private function onChange():void
        {
            submitBtn.enabled = email1.isValid && email2.isValid && email3.isValid
        }
    ]]>
</mx:Script>
<mx:Form  y="55" x="10" paddingBottom="0" paddingLeft="0" paddingRight="0" paddingTop="0">
    <mx:FormItem label="Email 1: " direction="horizontal">
        <controls:TextInputEmail id="email1" width="180" changed="onChange()" />
        <mx:Label text="{email1.isValid}"/>
    </mx:FormItem>
    <mx:FormItem label="Email 2: "  direction="horizontal">
        <controls:TextInputEmail id="email2" width="180" changed="onChange()" />
        <mx:Label text="{email2.isValid}"/>
    </mx:FormItem>
    <mx:FormItem label="Email 3: "  direction="horizontal">
        <controls:TextInputEmail id="email3" width="180" changed="onChange()" />
        <mx:Label text="{email3.isValid}"/>
    </mx:FormItem>
    <mx:FormItem>
        <mx:Button label="Enviar" id="submitBtn" enabled="false"
            click="Alert.show('OK, estão todos válidos!')"/>
    </mx:FormItem>
</mx:Form>

Bom trabalho e segue o fonte.

Fique por dentro de nossas novidades, ideias e atualizações