Autor Tema: JavaScript validar formulario con expresiones regulares test comprobar CU01185E  (Leído 6144 veces)

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Buenas noches. Aquí va el ejecicio CU01185E del curso JavaScript desde cero.

Citar
EJERCICIO

Un programador ha desarrollado un código y nos han pedido que lo revisemos. Escribe este código en un editor y responde a las siguientes preguntas:

Código: [Seleccionar]
<html>

    <head>

                <meta charset="utf-8">

                <style type="text/css">

                input {margin:10px;}

                </style>

        <script>

            function Valida(formulario) {

                /* Validación de campos NO VACÍOS */

                if ((formulario.campo1.value.length == 0) || (formulario.campo2.value.length ==0) || (formulario.cpostal.value.length ==0) || (formulario.dni.value.length ==0) || (formulario.email.value.length ==0)) {

                    alert('Falta información');

                    return false;

                }

                if (isNaN(parseInt(formulario.campo2.value))) {

                    alert('El campo2 debe ser un número');

                    return false;

                }

                /* validación del CÓDIGO POSTAL*/

                var ercp=/(^([0-9]{5,5})|^)$/;

                if (!(ercp.test(formulario.cpostal.value))) {

                    alert('Contenido del código postal no es un código postal válido');

                    return false; }

                /* validación del DNI */

                var erdni=/(^([0-9]{8,8}\-[A-Z])|^)$/;

                if (!(erdni.test(formulario.dni.value))) {

                    alert('Contenido del dni no es un DNI válido.');

                    return false;  }

                /* validación del e-mail */

                var ercorreo=/^[^@\s]+@[^@\.\s]+(\.[^@\.\s]+)+$/;       

                if (!(ercorreo.test(formulario.email.value))) {

                    alert('Contenido del email no es un correo electrónico válido.');

                    return false; }

                /* si no hemos detectado fallo devolvemos TRUE */

                return true;

            }

        </script>

    </head>

    <body>

        <form name="miFormulario" onsubmit="return Valida(this);" action="http://aprenderaprogramar.com" >

            Campo1 <input type="text" name="campo1"><br>

            Campo2 (debe ser número) <input type="text" name="campo2"><br>

            Código postal <input type="text" name="cpostal"><br>

            DNI <input type="text" name="dni"><br>

            email <input type="text" name="email"><br>

            <input type="submit" value="Enviar" name="enviar">

        </form>

    </body>
</html>

Citar
a) ¿Cómo se realiza la comprobación de que no hay campos vacíos?

Código: [Seleccionar]
if ((formulario.campo1.value.length == 0) || (formulario.campo2.value.length ==0) || (formulario.cpostal.value.length ==0) || (formulario.dni.value.length ==0) || (formulario.email.value.length ==0)){
            alert('Falta información');
            return false;
        }

Citar
b) ¿Cómo se realiza la comprobación de que el campo 2 es un número?

Código: [Seleccionar]
if (isNaN(parseInt(formulario.campo2.value))) {
            alert('El campo2 debe ser un número');
            return false;
        }

Citar
c) ¿En qué consiste la validación del código postal? Explícala paso a paso. Pon ejemplos de tres valores válidos y tres valores no válidos.

Se inicializa una expresión regular mediante la variable local "ercp". Para que se cumpla la expresión regular el dato entredo en el campo "cpostal" tiene que empezar y acabar con un dígito numérico entre 0 y 9 y tiene que tener una longitud mínima y máxima de 5 dígitos.
La condicional que maneja dicho campo hace un test sobre el dato entredo. Si se cumple la expresión regular no se ejecuta el código de la condicional, pero si no se cumple, se muestra un mensaje: "Contenido del código postal no es un código postal válido" y la función devuelve false.

Valores válidos: 01234, 74384 ó 00000

Valores NO válidos: 9896j, 0.1234, ó 123456

Citar
d) ¿En qué consiste la validación del DNI? Explícala paso a paso. Pon ejemplos de tres valores válidos y tres valores no válidos.

Se inicializa una expresión regular mediante la variable local "erdni". Para que se cumpla la expresión regular el dato entredo en el campo "dni" tiene que empezar  con un dígito numérico entre 0 y 9 con una longítud mínima y máxima de 8 dígitos, seguido de un "-" y acabar cun un dígito (en mayúscula) entre A Y Z.
La condicional que maneja dicho campo hace un test sobre el dato entredo. Si se cumple la expresión regular no se ejecuta el código de la condicional, pero si no se cumple, se muestra un mensaje: "Contenido del dni no es un DNI válido." y la función devuelve false.

Valores válidos: 00000000-F, 93841827-S ó 01010101-A

Valores NO válidos: 12345678F, 92837465-w ó 1234567-T

Citar
e) ¿En qué consiste la validación del email? Explícala paso a paso. Pon ejemplos de tres valores válidos y tres valores no válidos.

Se inicializa una expresión regular mediante la variable local "ercorreo". Para que se cumpla la expresión regular el dato entredo en el campo "emaill" NO tiene que empezar  con "@" ni con un espacio en blanco. El símbolo "+" indica que la subcadena contiene el símbolo al que precede una o más veces. Luego tiene que contener un símbolo "@" seguido de una subcadena que no contenga ni "@", ni espacios en blanco, ni punto. Al final tiene que acabar con un punto y cualquier carácter las veces que queramos, que no se ni "@", ni punto, ni espacio en blanco y después de esa subcadena no puedo haber ningún carácter "@", ni espacio en blanco ni punto.
La condicional que maneja dicho campo hace un test sobre el dato entredo. Si se cumple la expresión regular no se ejecuta el código de la condicional, pero si no se cumple, se muestra un mensaje: "Contenido del email no es un correo electrónico válido." y la función devuelve false.

Valores válidos: jfkkjasl@fljafj.fjaksdjfa, ljfajs@jflkajf.34, 78484@787484.ji

Valores NO válidos: kfldsjf, @kfaslfs.jkflajskl, fjlsajl  @ jffkls.com

Citar
f) ¿Cómo se consigue que no se envíe el formulario si no se cumplen los requisitos exigidos?


Código: [Seleccionar]
onsubmit="return Valida(this);
Si la devolución de la función es false se cancela la acción del método "submit()".

Gracias.

PD: No estoy muy seguro si entiendo esto:

Código: [Seleccionar]
/(^([0-9]{5,5})|^)$/
Yo interpreto que significa: que la subcadena empiece y termine con un dígito de número entre 0 y 9 y que tenga un longitud mínima y máxima de 5 dígitos o que empiece. Pero que significa "|^". Que empiece pero con qué si luego no hay ningún carácter?
« Última modificación: 03 de Mayo 2016, 17:15 por César Krall »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:CU01185E validar formulario en JavaScript
« Respuesta #1 en: 30 de Abril 2016, 14:41 »
Buenas dimiste.

El apartado a y b, pegaste una porción de código, pero faltaría una explicación sobre el.

Los apartados c, d, e y f son correctos.

En cuanto a tu duda, no sabría decirte exactamente, puesto que si no pones nada después de ^ entiendo que haría match con todo.

A ver si alguien que conozca mejor las expresiones regulares nos puede aclarar esa duda.

Saludos.

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Re:CU01185E validar formulario en JavaScript
« Respuesta #2 en: 30 de Abril 2016, 15:08 »
Hola, pedro,,

Gracias por tu tiempo, por el tiempo dedicado y por las corrección.

Daba por hecho que con el código ya se entendía. Repito los apartados a) y b) con sus explicaciones.

Citar
a) ¿Cómo se realiza la comprobación de que no hay campos vacíos?

Código: [Seleccionar]
if ((formulario.campo1.value.length == 0) || (formulario.campo2.value.length ==0) || (formulario.cpostal.value.length ==0) || (formulario.dni.value.length ==0) || (formulario.email.value.length ==0)){
            alert('Falta información');
            return false;
        }

Esta parte del código está comprobando si los values de los campos: campo1, campo2, cpostal, dni y email contienen más de 0 carácteres. En caso afirmativo no devuelve false (no se activa la acción por omisión) y aparece una alerta con el mensaje: "Falta información".

Citar
b) ¿Cómo se realiza la comprobación de que el campo 2 es un número?

Código: [Seleccionar]
if (isNaN(parseInt(formulario.campo2.value))) {
            alert('El campo2 debe ser un número');
            return false;
        }

En esta parte del código mediante el método "isNaN()" comprueba si la propiedad del campo "campo2" es un número o no. El método "parseInt()" extrae de la cadena de texto sólo los números enteros.

Gracias, Pedro :)

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:CU01185E validar formulario en JavaScript
« Respuesta #3 en: 30 de Abril 2016, 18:58 »
Ahora queda mas claro, te lo comente porque de esta forma la respuesta es bastante mas completa y servirá de mejor ayuda para los que busquen un apoyo a la hora de resolver este ejercicio.

Saludos. ;D

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".