Problema de válidación con JavaScript

Publicaciones
67
Fecha de inscripción
lunes, 30 de septiembre de 2013
Última intervención
jueves, 29 de noviembre de 2018
- - Última respuesta: misterdekus
Publicaciones
118
Fecha de inscripción
miércoles, 10 de enero de 2018
Última intervención
domingo, 9 de diciembre de 2018
- 29 nov 2018 a las 16:57
Hola, tengo un problema para validar un formulario de HTML en JavaScript, ya que no me comprueba ningún campo. Agradecería sus ayudas. Gracias!

Pongo solo el formulario en HTML para que no sea tan largo:


<form action="registrar.php" method="post" class="form-register" onsubmit="return validar()">
<div class="row half">
<div class="12u">
<input class="text" type="text" name="name" id="name" placeholder="Nombre y apellido" />
</div>
</div>
<div class="row half">
<div class="12u">
<input class="text" type="text" name="email" id="email" placeholder="Email" />
</div>
</div>
<div class="row half">
<div class="12u">
<textarea name="message" id="message" placeholder="Escriba aquí su mensaje..."></textarea>
</div>
</div>
<div class="row half">
<div class="12u">
<ul class="actions">
<li>
<input type="submit" value="Enviar" class="button alt" />
</li>
</ul>
</div>
</div>
</form>



El código de JavaScript es el siguiente:


function validaVacio(valor) {
valor = valor.replace(" ", "");
valor = valor == undefined ? "" : valor;
if (!valor || 0 === valor.trim().length) {
return true;
}
else {
return false;
}
}

function validar(){

var correo = document.getElementById("email").value;
var nombre = document.getElementsByName("name")[0].value;
var text = document.getElementsByName("message")[0].value;

var expr = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

//COMPRUEBA MAIL, NOMBRE Y TEXT AREA
if ( !expr.test(correo) )
{
alert("Error: La dirección de correo " + correo + " es incorrecta.");
return false;

else if( !expr.test(nombre) )
{
alert("Error: La dirección de correo " + nombre + " es incorrecta.");
return false;
}

else if( !expr.test(text) )
{
alert("Error: La dirección de correo " + text + " es incorrecta.");
return false;
}

}

//COMPRUEBA CAMPOS VACIOS
if ( validaVacio(correo.value) || validaVacio(nombre.value) || validaVacio(text.value)) {
alert("Los campos no pueden quedar vacios");
return false;
}
return true;
}
Ver más 

Tu respuesta

2 respuestas

Mejor respuesta
Publicaciones
118
Fecha de inscripción
miércoles, 10 de enero de 2018
Última intervención
domingo, 9 de diciembre de 2018
1
Gracias
Hola omikron87

despues de unas pruebas ya se donde esta tu falla o fallas

todo esta en el codigo JS

si lo haces así como esta ( y supongo que por eso pides ayuda ) y le das en el boton
te marca "La dirección de correo es incorrecta."
y no "Los campos no pueden quedar vacios"
porque el Java ejecuta la funcion validar() de arriba hacia abajo

entonces solo mueve la condicion del If de "COMPRUEBA CAMPOS VACIOS"
justo antes del if del "COMPRUEBA MAIL, NOMBRE Y TEXT AREA"

pero te vas encontrar con el problema que no "recibe" los valores

tu lo tienes asi :
if ( validaVacio(correo.value) || validaVacio(nombre.value) || validaVacio(text.value))


solo quitale el .value
if ( validaVacio(correo) || validaVacio(nombre) || validaVacio(text))


Saludos

Deja un "Gracias" 1

¡Estamos felices de haberte ayudado! ¿Te hemos sido de ayuda? ¡Déjanos un comentario! Evalúa a CCM

CCM 18520 usuarios nos han dicho gracias este mes

omikron87
Publicaciones
67
Fecha de inscripción
lunes, 30 de septiembre de 2013
Última intervención
jueves, 29 de noviembre de 2018
-
Hola misterdekus. Muchas gracias por tu ayuda, probe con lo que me comentaste y solo logre que me corrobore una vez el campo correo y después no lo volvió hacer.

Puede que además haya un error en algún otro lado??
misterdekus
Publicaciones
118
Fecha de inscripción
miércoles, 10 de enero de 2018
Última intervención
domingo, 9 de diciembre de 2018
> omikron87
Publicaciones
67
Fecha de inscripción
lunes, 30 de septiembre de 2013
Última intervención
jueves, 29 de noviembre de 2018
-
no entendi muy bien eso de "... solo logre que me corrobore una vez el campo correo y después no lo volvió hacer. "

si te refieres a por que te sale siempre "La dirección de correo es incorrecta." ?

es por que tu lo tienes asi validado ...

if ( !expr.test(correo) )
{
alert("Error: La dirección de correo " + correo + " es incorrecta."); 
return false;
}

else if( !expr.test(nombre) ) <-- 
{
alert("Error: La dirección de correo " + nombre + " es incorrecta."); <---
return false;
}

else if( !expr.test(text) ) <--
{
alert("Error: La dirección de correo " + text + " es incorrecta."); <---
return false;
}


si es otra cosa , trata de explicarte mejor

Saludos
Comenta la respuesta de misterdekus
Publicaciones
67
Fecha de inscripción
lunes, 30 de septiembre de 2013
Última intervención
jueves, 29 de noviembre de 2018
0
Gracias
Hola. Me refiero que deje todos los campos vacíos y me salio solamente una vez ese mensaje, al volver a ingresar en el sitio ya no me muestra más ese mensaje, sigue de largo, no vuelve a corroborar los campos.

Por otro lado solo corrobora el campo correo y los otros campos no. Por las dudas aclaro que tengo tres input llamados name, email y message.

De antemano te agradezco por la ayuda que me estas brindando.
misterdekus
Publicaciones
118
Fecha de inscripción
miércoles, 10 de enero de 2018
Última intervención
domingo, 9 de diciembre de 2018
-
ok,

a que te refieres con "al volver a ingresar en el sitio ya no me muestra más ese mensaje, sigue de largo, no vuelve a corroborar los campos."

te refieres al actualizar el sitio ? al menos que le hallas dado en la casilla de "no mostrar de nuevo" o que hallas hecho los cambios en el navegador en vez de en el editor de html ( BLOCK DE NOTAS, NOTPAD++, ETC ) no es logico eso

en cuanto a "solo corrobora el campo correo y los otros campos no" ... no se si te diste cuenta que los 2 campos ( name y message ) la misma "condicion" que el campo mail y tiene el mismo mensaje de "Error: La dirección de correo ... incorrecto"

Saludos
Comenta la respuesta de omikron87