Buenas, para quien revise este ejercicio comentar algunas cosas.
- Falta responder al ejercicio 1 de la entrega CU01159E del curso.
- En este otro hilo puede verse la respuesta al ejercicio 1 y una forma alternativa de solución para el ejercicio 2 donde se usa onsubmit como atributo del form en lugar de definirlo con un addEventListener
https://aprenderaprogramar.com/foros/index.php?topic=4018.0 Esta forma es más adecuada en este momento del curso ya que en la entrega CU01159E aún no se ha explicado preventDefault()
- Respecto a la pregunta de que no se consigue impedir el envío del formulario. En la solución dada, donde se define el submit con un addEventListener, para que no se envíe el formulario cuando fallen las condiciones habría que recibir el evento como parámetro de la función comprobarEnvio y aplicarle preventDefault() para evitar el envío cuando fallan las condiciones.
Habría que introducir el evento como parámetro recibido (automáticamente) y el fragmento a modificar quedaría así:
function comprobarEnvio(elEvento){
//Aquí el resto del código hasta llegar a
if (nombre.value == false || apellidos.value == false || reglaArroba.test(correo.value) == false || reglaPunto.test(correo.value) == false || regla3.test(correo.value) == false || valorEdad <= 0){
elEvento.preventDefault();
return false;
}
De este modo se evita el envío del formulario.
- Respecto a la pregunta de una manera más eficiente de indicar que "SI alguna de las condiciones no se cumple, ENTONCES return false" puede hacerse usando un parámetro booleano por ejemplo hayErrores que inicialmente se establecerá como hayErrores=false; de modo que si se ha detectado algún problema se habrá hecho hayErrores = true; De este modo la única comprobación a realizar sería comprobar si hayErrores tiene valor true.
Salu2