Autor Tema: Validar formularios con JavaScript expresiones regulares y HTML5 CU01155E  (Leído 3409 veces)

bermartinv

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 298
    • Ver Perfil
Hola, mi resultado para el ejercicio es el siguiente:

Código: [Seleccionar]
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
<form method="get" name="formulario" onsubmit="validar()">
   <label>Introduzca su nombre</label>
   <input type="text" id="nombre" size="20"/><br/>
   <label>Introduzca su apellido</label>
   <input type="text" id="apellido" size="20"/><br/>
   <label>Introduzca su email</label>
   <input type="text" id="email" size="50"/><br/>
   <input type="submit" value="submit" />
   <input type="reset" value="Reiniciar datos" />
   
</form> 
<script>
var contador=0;
function validar(){
        validarNombre();
        validarApellido();
        validarEmail();
        validarOk();
}
   
function validarNombre(){
        var nombre=document.getElementById("nombre").value;
        var expresionRegular=/^\w{3,}$/;
        if (!(expresionRegular.test(nombre))){
            alert ("Ha introducido los datos de nombre mal. Deberá indicar un nombre superior a tres letras");
        }
        else {
            contador++;
        }
}
   
function validarApellido(){
        var apellido=document.getElementById("apellido").value;
        var expresionRegular=/^\w{3,}$/;
        if (!(expresionRegular.test(apellido))){
            alert ("Ha introducido los datos de apellido mal. Deberá indicar un apellido superior a tres letras");
        }
        else {
            contador++;
        }
}
   
function validarEmail(){
        var email=document.getElementById("email").value;
    email=convertirMinusculas(email);
    email=comprobarAtEmail(email);
if( !(/^([\w-\.]{3,}\@.+\..+)$/.test(email)) ) {
  alert ("Le recordamos condiciones que debe cumplir su correo electronico:\n\t 1.Su nombre ha de tener almenos 3 caracteres(alfanumericos o el subrayado)\n\t 2.Debe contener la '@' ");
}
else {
contador++;
       
}   
}
   
function validarOk(){
    if (contador==3){
            alert ("Introdujo todos los valores correctamente y su formulario será enviado");
    }
}
   
function convertirMinusculas(email){
    return email.toLowerCase();   
    }
   
function comprobarAtEmail(email){
    var expresion=/\sat\s/g;
    return email.replace(expresion,'@');
}
   
</script>
</body>
</html>


Además quería comentar, que podriamos usar en este ejercicio muchos atributos nuevos que salieron con HTML5, podriamos haber añadido el atributo required para obligar al usuario a que rellenase los campos, además para el email podriamos añadir type="email", una ayuda que facilitaria al usuario introducir los campos es añadir placeholder="descripcion del campo". También podemos añadir dentro de input la expresion regular, en el caso de nombre y apellido podriamos poner pattern="[A-Za-z]{3,}".

Tengo una cuestión, que estoy planteandome que no sé si es correcto mi idea para hacer una verificiacion sincrona de los formularios. Quiero que cada campo cada vez que sea rellenado y se cambie a otros campo se verifique(si es correcto aparezca un tic de correcto y si no lo es una cruz de incorrecto).Estaba pensando en utilizar el evento onfocusout para que cada vez que se cambien de campo se verifique, ¿sería correcto el planteamiento?

Otra cosa que me ha parecido muy comodo para la verificación de formularios es el poder cambiar el mensaje de verificación con setCustomValidity().

Saludos.
« Última modificación: 19 de Noviembre 2015, 11:56 por César Krall »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:CU01155E y cuestiones sobre formularios
« Respuesta #1 en: 19 de Noviembre 2015, 11:55 »
Hola!

Tu código funciona bien, aunque no te has atenido a lo que pedía el ejercicio, por ejemplo el ejercicio pedía crear una función validacionConExpReg y no la has creado, aunque has hecho algo equivalente y todo correcto.

Sobre el uso de atributos html5 efectivamente, pueden usarse pero eso sería objeto de otro curso, en este curso los objetivos se centran en el aprendizaje de JavaScript.

Sobre el uso del evento onfocusout para que cada vez que se cambien de campo se verifique la idea es buena, pero te recomendaría usar el evento onblur o una combinación de ambos o buscar una solución que ofrezca compatibilidad con todos los navegadores, porque puede haber algunos eventos que no sean detectados por todos los navegadores y podría ocurrir esto con el focusout.

Saludos!
Responsable de departamento de producción aprenderaprogramar.com

bermartinv

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 298
    • Ver Perfil
Re:Validar formularios con JavaScript expresiones regulares y HTML5 CU01155E
« Respuesta #2 en: 19 de Noviembre 2015, 13:08 »
Gracias César, como siempre eficaz.
Sobre el ejercicio tienes razón, lo hice así porque me salió más práctico y enfocado a ejercicios anteriores con llamadas a funciones. Pero sí, me falta la función que dices y lo pedía el ejercico así.
Saludos!!!

 

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".