Validations for an Entry [Xamarin.Forms]


Introducción

En este artículo veremos algunos de los diferentes tipos de validaciones que puede llevar un Entry, esto normalmente para los formularios que existen en los registros de cualquier aplicación.

Comencemos

Para este ejemplo debemos de contar ya con nuestra aplicación en Xamarin.Forms, en dado caso que no, realicemos lo siguiente:

Abramos Visual Studio y seleccionemos un Nuevo Proyecto.

Después, elijamos la aplicación multiplataforma (Cross-Platform), asignemos un nombre al proyecto y establezcamos la ruta del proyecto. Luego, hagamos clic en OK.

0

Ahora seleccionemos la plantilla: Aplicación en Blanco (Blank App) y la estrategia del código compartido será: .NET Standard

1

Una vez creada la solución, procedamos a editar la página MainPage.xaml en donde agregaremos un mini formulario tipo de registro, al cual le brindaremos las distintas validaciones.

XAML

1-5

En el code behind, agreguemos el siguiente método, que se encargara de toda la lógica con respecto a las distintas validaciones:

C#


private async Task validarFormulario()
        {
            //Valida si el valor en el Entry se encuentra vacio o es igual a Null
            if (String.IsNullOrWhiteSpace(UserName.Text))
            {
                await this.DisplayAlert("Advertencia", "El campo del nombre es obligatorio.", "OK");
                return false;
            }
            //Valida que solo se ingresen letras
            else if (!UserName.Text.ToCharArray().All(Char.IsLetter))
            {
                await this.DisplayAlert("Advertencia", "Tu información contiene números, favor de validar.", "OK");
                return false;
            }
            else
            {
                //Valida si se ingresan caracteres especiales
                string caractEspecial = @"^[^ ][a-zA-Z ]+[^ ]$";
                bool resultado = Regex.IsMatch(UserName.Text, caractEspecial, RegexOptions.IgnoreCase);
                if (!resultado)
                {
                    await this.DisplayAlert("Advertencia", "No se aceptan caracteres especiales, intente de nuevo.", "OK");
                    return false;
                }
            }

            if (String.IsNullOrWhiteSpace(UserLastName.Text))
            {
                await this.DisplayAlert("Advertencia", "El campo del apellido es obligatorio.", "OK");
                return false;
            }
            //Valida que solo se ingresen letras
            else if (!UserLastName.Text.ToCharArray().All(Char.IsLetter))
            {
                await this.DisplayAlert("Advertencia", "Tu información contiene números, favor de validar.", "OK");
                return false;
            }
            else
            {
                //Valida si se ingresan caracteres especiales
                string caractEspecial = @"^[^ ][a-zA-Z ]+[^ ]$";
                bool resultado = Regex.IsMatch(UserLastName.Text, caractEspecial, RegexOptions.IgnoreCase);
                if (!resultado)
                {
                    await this.DisplayAlert("Advertencia", "No se aceptan caracteres especiales, intente de nuevo.", "OK");
                    return false;
                }
            }

            if (String.IsNullOrWhiteSpace(UserEmail.Text))
            {
                await this.DisplayAlert("Advertencia", "El campo del correo electronico es obligatorio.", "OK");
                return false;
            }
            else
            {
                //Valida que el formato del correo sea valido
                bool isEmail = Regex.IsMatch(UserEmail.Text, @"\A(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)\Z", RegexOptions.IgnoreCase);
                if (!isEmail)
                {
                    await this.DisplayAlert("Advertencia", "El formato del correo electrónico es incorrecto, revíselo e intente de nuevo.", "OK");
                    return false;
                }
            }

            if (String.IsNullOrWhiteSpace(UserCelular.Text))
            {
                await this.DisplayAlert("Advertencia", "El campo del número celular es obligatorio.", "OK");
                return false;
            }
            //Valida si la cantidad de digitos ingresados es menor a 10
            else if (UserCelular.Text.Length != 10)
            {
                    await this.DisplayAlert("Advertencia", "Faltan digitos, favor de ingresar su numero a 10 digitos.", "OK");
                    return false;
            }
            else
            {
                //Valida que solo se ingresen numeros
                if(!UserCelular.Text.ToCharArray().All(Char.IsDigit))
                {
                    await this.DisplayAlert("Advertencia", "El formato del celular es incorrecto, solo se aceptan numeros.", "OK");
                    return false;
                }
            }
            return true;
        }

Para que esto funcione correctamente, ahora agregaremos el evento Clicked a nuestro Button, el cual quedaría de la siguiente manera en el XAML:

Antes

2

Después

3

Ya para finalizar solo deberemos de mandar llamar al método de validarFormulario, en donde si todo se ingresa de la manera correcta nos mostrara un mensaje que expresara que todos los campos cumplen con el formato requerido.

C#

 async void Continue_Tapped(object sender, EventArgs e)
        {
            if (await validarFormulario())
            {
                await DisplayAlert("Exito","Todos tus campos cumplieron las validaciones.","OK");
            }
        }

Ejecutemos la aplicación para corroborar que todo funcione.

Resultado

ValidateEntry15seconds

 

Descarga el código completo desde mi GitHub.

GitIronMan

¡Hasta la próxima!

Anuncios

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s