Autor Tema: Validación de formularios JavaScript con expresiones regulares test CU01182E  (Leído 3027 veces)

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Hola, aquí mis respuestas al ejercicio CU01182E del curso JavaScript desde cero.

Citar
EJERCICIO

Crear el código JavaScript que cumpla con las siguientes funciones:
a) Si la longitud (número de caracteres) del campo nombre es mayor de 15 o igual a cero, el formulario no se enviará.
b) Si la longitud (número de caracteres) del campo apellidos es mayor de 30 o igual a cero, el formulario no se enviará.
c) Si la longitud (número de caracteres) del campo email es mayor de 35 o igual a cero, el formulario no se enviará. Si el email no contiene el carácter @ el formulario no se enviará.
d) Si se produce cualquiera de las circunstancias anteriores, debe aparecer un recuadro con color de fondo naranja y texto negro a la derecha de la casilla de introducción de datos, informando del problema detectado en ese campo (si es que ese campo presenta algún problema). Nota: estos mensajes se deben mostrar sólo si el campo es erróneo después de pulsado el botón enviar, y deben desaparecer si el usuario realiza un nuevo intento y el campo es correcto. Los mensajes se incorporarán al DOM (no serán mensajes usando alert).
Ejemplo de ejecución. El usuario deja el nombre, apellidos y correo electrónico vacíos. A la derecha de las casillas de introducción de datos aparecerá: El nombre no puede estar vacío. Los apellidos no pueden estar vacíos. El correo electrónico no puede estar vacío.

Ahora el usuario introduce nombre: <<Juan Manuel de Todos los Santos Efímeros Ecuánimes de Todos los días de la Tercera Edad>>. Como apellidos introduce: <<Suárez>>. Y como correo electrónico introduce lo siguiente: << juanmanueldetodoslosantosefimerosecuanimesdetodoslosdias@gmail.com >>. Pulsa enviar. A la derecha de la casilla de introducción del nombre debe aparecer: “Nombre demasiado largo. Máximo 15 caracteres”. A la derecha de apellidos no aparecerá nada porque el apellido es correcto. A la derecha del correo electrónico debe aparecer: “Correo electrónico demasiado largo. Máximo 35 caracteres”. Ahora el usuario escribe como nombre: Juan Manuel. Como apellidos: Suárez. Y como correo electrónico juanmanuel@gmail.com . Pulsa enviar y el formulario es enviado.

Código: [Seleccionar]
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8">
<style type="text/css">
body {background-color:yellow; font-family: sans-serif;}
label{color: maroon; display:block; padding:5px;}
.errorMsg{display:none; border:solid 2px; background-color: orange;}
</style>
<script type="text/javascript">
window.onload = function () {
document.formularioContacto.nombre.focus();
document.formularioContacto.addEventListener('submit', validarFormulario);
}
function validarFormulario(evObject){
evObject.preventDefault();
var formulario = document.formularioContacto;
var estadoNombre = false;
var estadoApellidos = false;
var estadoEmail = false;
estadoNombre = comprobarNombre(formulario);
estadoApellidos = comprobarApellidos(formulario);
estadoEmail = comprobarEmail(formulario);
if(estadoNombre && estadoApellidos && estadoEmail){formulario.submit();}
}
function comprobarNombre(formulario){
if(formulario.nombre.value.length==0){
formulario.nombre.nextSibling.style.display = 'inline';
formulario.nombre.nextSibling.textContent = 'El nombre no puede estar vacío.';
return false;
}else if(formulario.nombre.value.length>15){
formulario.nombre.nextSibling.style.display = 'inline';
formulario.nombre.nextSibling.textContent = 'Nombre demasiado largo. Máximo 15 caracteres.';
return false;
}else{
formulario.nombre.nextSibling.style.display = 'none';
return true;
}
}
function comprobarApellidos(formulario){
if(formulario.apellidos.value.length==0){
formulario.apellidos.nextSibling.style.display = 'inline';
formulario.apellidos.nextSibling.textContent = 'Apellidos no puede estar vacío.';
return false;
}else if(formulario.apellidos.value.length>30){
formulario.apellidos.nextSibling.style.display = 'inline';
formulario.apellidos.nextSibling.textContent = 'Apellidos demasiado largos. Máximo 30 caracteres.';
return false;
}else{
formulario.apellidos.nextSibling.style.display = 'none';
return true;
}
}
function comprobarEmail(formulario){
if(formulario.email.value.length==0){
formulario.email.nextSibling.style.display = 'inline';
formulario.email.nextSibling.textContent = 'Email no puede estar vacío.';
return false;
}else if(formulario.email.value.length>35){
formulario.email.nextSibling.style.display = 'inline';
formulario.email.nextSibling.textContent = 'Email demasiado largo. Máximo 35 caracteres.';
return false;
}else if(!/[@]/.test(formulario.email.value)){
formulario.email.nextSibling.style.display = 'inline';
formulario.email.nextSibling.textContent = 'Email no contiene @';
return false;
}else{
formulario.email.nextSibling.style.display = 'none';
return true;
}
}
</script>
</head>
<body>
<div id="cabecera"><h1>Portal web aprenderaprogramar.com</h1><h2>Didáctica y divulgación de la programación</h2>
</div>
<!-- Formulario de contacto -->
<form name ="formularioContacto" class="formularioTipo1" method="get" action="http://aprenderaprogramar.com">
<p>Si quieres contactar con nosotros envíanos este formulario relleno:</p>
<label for="nombre"><span>Nombre:</span> <input id="nombre" type="text" name="nombre" /><span class="errorMsg"></span></label>
<label for="apellidos"><span>Apellidos:</span> <input id="apellidos" type="text" name="apellidos" /><span class="errorMsg"></span></label>
<label for="email"><span>Correo electrónico:</span> <input id="email" type="text" name="email" /><span class="errorMsg"></span></label>
<label><input type="submit" value="Enviar"><input type="reset" value="Cancelar"></label>
</form>
</body>
</html>

Saludos.
« Última modificación: 05 de Febrero 2016, 08:56 por Ogramar »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Validación de formularios JavaScript. Ejercicio CU01182E.
« Respuesta #1 en: 03 de Febrero 2016, 22:04 »
Después de revisar el ejercicio, aunque creo que todo va como pide el enunciado, creo que se podía mejorar bastante esa solución y lo he resuelto de distinta forma.

aquí dejo el código...

Código: [Seleccionar]
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8">
<style type="text/css">
body {background-color:yellow; font-family: sans-serif;}
label{color: maroon; display:block; padding:5px;}
.errorMsg{display:none; border:solid 2px; background-color: orange;}
</style>
<script type="text/javascript">
window.onload = function () {
document.formularioContacto.nombre.focus();
document.formularioContacto.addEventListener('submit', validarFormulario);
}
function validarFormulario(evObject){
evObject.preventDefault();
var formulario = document.formularioContacto;
var estadoNombre = false;
var estadoApellidos = false;
var estadoEmail = false;
estadoNombre = comprobarNombre(formulario);
estadoApellidos = comprobarApellidos(formulario);
estadoEmail = comprobarEmail(formulario);
if(estadoNombre && estadoApellidos && estadoEmail){formulario.submit();}
}
function comprobarNombre(formulario){
if(formulario.nombre.value.length==0 || /^\s*$/.test(formulario.nombre.value)){
mensajeError(formulario.nombre, 0);
return false;
}else if(formulario.nombre.value.length>15){
mensajeError(formulario.nombre, 1);
return false;
}else{
ocultaCajaError(formulario.nombre);
return true;
}
}
function comprobarApellidos(formulario){
if(formulario.apellidos.value.length==0 || /^\s*$/.test(formulario.apellidos.value)){
mensajeError(formulario.apellidos, 2);
return false;
}else if(formulario.apellidos.value.length>30){
mensajeError(formulario.apellidos, 3);
return false;
}else{
ocultaCajaError(formulario.apellidos);
return true;
}
}
function comprobarEmail(formulario){
if(formulario.email.value.length==0 || /^\s*$/.test(formulario.email.value)){
mensajeError(formulario.email, 4);
return false;
}else if(formulario.email.value.length>35){
mensajeError(formulario.email, 5);
return false;
}else if(!/[@]/.test(formulario.email.value)){
mensajeError(formulario.email, 6);
return false;
}else{
ocultaCajaError(formulario.email);
return true;
}
}
function mensajeError(nodo, numError){
nodo.nextSibling.style.display = 'inline';
var mensaje = ['El nombre no puede estar vacío', 'Nombre demasiado largo. Máximo 15 caracteres.',
'El campo apellidos no puede estar vacío.', 'Apellidos demasiado largo. Máximo 30 caracteres.',
'Email no puede estar vacío.', 'Email demasiado largo. Máximo 35 caracteres.', 'Email no contiene @'];
nodo.nextSibling.textContent = mensaje[numError];
}
function ocultaCajaError(nodo){
nodo.nextSibling.style.display = 'none';
}
</script>
</head>
<body>
<div id="cabecera"><h1>Portal web aprenderaprogramar.com</h1><h2>Didáctica y divulgación de la programación</h2>
</div>
<!-- Formulario de contacto -->
<form name ="formularioContacto" class="formularioTipo1" method="get" action="http://aprenderaprogramar.com">
<p>Si quieres contactar con nosotros envíanos este formulario relleno:</p>
<label for="nombre"><span>Nombre:</span> <input id="nombre" type="text" name="nombre" /><span class="errorMsg"></span></label>
<label for="apellidos"><span>Apellidos:</span> <input id="apellidos" type="text" name="apellidos" /><span class="errorMsg"></span></label>
<label for="email"><span>Correo electrónico:</span> <input id="email" type="text" name="email" /><span class="errorMsg"></span></label>
<label><input type="submit" value="Enviar"><input type="reset" value="Cancelar"></label>
</form>
</body>
</html>

Saludos.

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Buenas Pedro me refiero a la última versión de código que has planteado como solución

a) Correcto b) Correcto c) Correcto d) Correcto

Además me gusta cómo has organizado el código, la organización en funciones, uso de arrays, expresiones regulares, etc.  ;D


Salu2

 

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