Problema de válidación con JavaScript

Cerrado
omikron87 Mensajes enviados 71 Fecha de inscripción lunes, 30 de septiembre de 2013 Estatus Miembro Última intervención martes, 2 de abril de 2019 - 23 nov 2018 a las 21:56
misterdekus Mensajes enviados 473 Fecha de inscripción miércoles, 10 de enero de 2018 Estatus Miembro Última intervención miércoles, 27 de julio de 2022 - 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;
}
Consulta también:

2 respuestas

misterdekus Mensajes enviados 473 Fecha de inscripción miércoles, 10 de enero de 2018 Estatus Miembro Última intervención miércoles, 27 de julio de 2022 127
24 nov 2018 a las 21:26
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
1
omikron87 Mensajes enviados 71 Fecha de inscripción lunes, 30 de septiembre de 2013 Estatus Miembro Última intervención martes, 2 de abril de 2019 4
28 nov 2018 a las 20:56
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??
0
misterdekus Mensajes enviados 473 Fecha de inscripción miércoles, 10 de enero de 2018 Estatus Miembro Última intervención miércoles, 27 de julio de 2022 127 > omikron87 Mensajes enviados 71 Fecha de inscripción lunes, 30 de septiembre de 2013 Estatus Miembro Última intervención martes, 2 de abril de 2019
29 nov 2018 a las 01:13
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
0
omikron87 Mensajes enviados 71 Fecha de inscripción lunes, 30 de septiembre de 2013 Estatus Miembro Última intervención martes, 2 de abril de 2019 4
29 nov 2018 a las 02:45
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.
0
misterdekus Mensajes enviados 473 Fecha de inscripción miércoles, 10 de enero de 2018 Estatus Miembro Última intervención miércoles, 27 de julio de 2022 127
29 nov 2018 a las 16:57
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
0