Foros del Web » Programando para Internet » Javascript »

Validar form con javascript

Estas en el tema de Validar form con javascript en el foro de Javascript en Foros del Web. Hola, queria saber como podia hacer para que cuando valido un formulario con javascript, al hacer clic en el boton de enviar, me aperezca debajo ...
  #1 (permalink)  
Antiguo 30/11/2007, 20:36
Avatar de hgp147  
Fecha de Ingreso: diciembre-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 980
Antigüedad: 17 años, 4 meses
Puntos: 36
Validar form con javascript

Hola, queria saber como podia hacer para que cuando valido un formulario con javascript, al hacer clic en el boton de enviar, me aperezca debajo de los input de texto por ejemplo: "La longitud es invalida"...etc. Es decir como hace hotmail.com en la parte de registro. (Pero que los mensajes de error aparezcan al hacer clic en el boton enviar)

Gracias!
  #2 (permalink)  
Antiguo 01/12/2007, 04:20
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Re: Validar form con javascript

Hola hgp147

A ver si te sirve este ejemplo:

Código PHP:
<html>
<
head>
<
script type="text/javascript">
function 
validar(frm) {
  if (
frm.pepe.value.length 4) {
   
document.getElementById('error').style.visibility 'visible';
   return 
false;
  }
}
</script>
</head>
<body>
<form onsubmit="return validar(this)">
<input type="text" name="pepe" />
<p id="error" style="visibility:hidden">Longitud inválida</p>
<input type="submit" />
</form>
</body>
</html> 
Saludos,
  #3 (permalink)  
Antiguo 01/12/2007, 09:31
Avatar de hgp147  
Fecha de Ingreso: diciembre-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 980
Antigüedad: 17 años, 4 meses
Puntos: 36
Re: Validar form con javascript

Hola JavierB, gracias por el código, era justo lo que quería. Pero tengo una duda: al intentar agregar otro campo de texto, solamente me valida el primero y el otro no. Aca dejo el código:

Código HTML:
<html>
<head>
<script type="text/javascript">
function validar(frm) {
  
  if (frm.pepe.value.length < 4) {
   document.getElementById('error').style.visibility = 'visible';
   return false;
   } 
   
   
   if (form.pepe2.value.length < 4) {
   document.getElementById('error2').style.visibility = 'visible';
   return false;
   } 
   
}
</script>
</head>
<body>
<form action="procesa.php" method="post" onsubmit="return validar(this)">

<input type="text" name="pepe" />
<p id="error" style="visibility:hidden">Longitud inválida</p>

<input type="text" name="pepe2" />
<p id="error2" style="visibility:hidden">Longitud inválida2</p>

<input type="submit" />
</form>
</body>
</html> 
  #4 (permalink)  
Antiguo 01/12/2007, 12:42
Avatar de Snd234  
Fecha de Ingreso: mayo-2007
Ubicación: Frente al PC
Mensajes: 413
Antigüedad: 17 años
Puntos: 2
Re: Validar form con javascript

Si la primera validación da true (es decir, da error), entraras al IF y luego finalizara el script, con el return.

Para que la segunda validación se realice, la primera tendría que dar false (sin errores)...

Y lo otro, tu función recibe como parámetro el formulario con el nombre frm, y en la primera validación accedes al elemento pepe a través de frm.pepe, en cambio con la segunda validación tratas de acceder a pepe2 a través de form.pepe2, siendo que debería ser frm.pepe2.
__________________
KIBIT.cl
  #5 (permalink)  
Antiguo 01/12/2007, 13:14
Avatar de hgp147  
Fecha de Ingreso: diciembre-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 980
Antigüedad: 17 años, 4 meses
Puntos: 36
Re: Validar form con javascript

Gracias Snd234 por la explicacion. Y como podria hacer para que aparezcan todos los errores a la vez? Es decir que si pongo en los 2 campos algo incorrecto, solo me pondra un error en el primero y quiero que aparezcan el error en los dos. Otra duda es como podia hacer para que desaparezca el texto que dice el error cuando los datos del campo son corregidos (despues de hacer clic en el submit).

Espero que se haya entendido.

Gracias
  #6 (permalink)  
Antiguo 01/12/2007, 16:11
Avatar de Snd234  
Fecha de Ingreso: mayo-2007
Ubicación: Frente al PC
Mensajes: 413
Antigüedad: 17 años
Puntos: 2
Re: Validar form con javascript

Para lo primero, que muestre todos los mensajes de error, tienes que quitarle los return en las validaciones y dejarla al final, de esta forma la funciona realizara todas las validaciones y mostrara los mensajes correspondientes.

Pero habria que saber si hubieron errores o no en las validaciones, entonces, si la primera validación es false (con error), guardar ese resultado en una variable resultado1, lo mismo para las demás validaciones, donde habrá una variable resultado2, resultado3, etc. que guarde los resultados.

Luego, al terminar todas las validaciones hay que evaluar esos resultado, usando return(resultado1 && resultado2); donde retornara false en general si una sola validación dio false (con error), y de esta forma no se enviara el formulario.

Para ocultar los mensajes, tendrías que agregarle la sentencia ELSE a las validaciones, realizando la acción contraria, es decir, ocultándola. Y además, asignando true a la variable de resultado de esa validación.

En resumen, tu código seria:
Código PHP:
<script type="text/javascript">
function 
validar(frm) {
    var 
resultado1 true;
    var 
resultado2 true;
    
    if (
frm.pepe.value.length 4) {
        
document.getElementById('error').style.visibility 'visible';
        
resultado1 false;    // Error
    
}
    else {
        
document.getElementById('error').style.visibility 'hidden';
        
resultado1 true;    // Sin error
    
}
   
    if (
frm.pepe2.value.length 4) {
        
document.getElementById('error2').style.visibility 'visible';
        
resultado2 false;    // Error
    
}
    else {
        
document.getElementById('error2').style.visibility 'hidden';
        
resultado3 true;    // Sin error
    
}
    return(
resultado1 && resultado2);
}
</script> 
__________________
KIBIT.cl

Última edición por Snd234; 01/12/2007 a las 16:21
  #7 (permalink)  
Antiguo 01/12/2007, 17:15
Avatar de hgp147  
Fecha de Ingreso: diciembre-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 980
Antigüedad: 17 años, 4 meses
Puntos: 36
Re: Validar form con javascript

Gracias nuevamente Snd234, excelente la explicación y el código. Funciona perfecto!
  #8 (permalink)  
Antiguo 02/12/2007, 01:45
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: Validar form con javascript

Hola:

Muchas líneas que pueden simplificarse:

Código:
function validar(frm) {
  var resultado1 = frm.pepe.value.length > 3;
  var resultado2 = frm.pepe2.value.length > 3;
  document.getElementById('error').style.visibility = (resultado1) ? 'hidden':'visible';
  document.getElementById('error2').style.visibility = (resultado2) ? 'hidden':'visible';
  return  (resultado1 && resultado2);
}
Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #9 (permalink)  
Antiguo 02/12/2007, 12:17
Avatar de hgp147  
Fecha de Ingreso: diciembre-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 980
Antigüedad: 17 años, 4 meses
Puntos: 36
Re: Validar form con javascript

Hola caricatos, muy bueno tu aporte.!!!!!!
  #10 (permalink)  
Antiguo 02/12/2007, 21:08
Avatar de hgp147  
Fecha de Ingreso: diciembre-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 980
Antigüedad: 17 años, 4 meses
Puntos: 36
Re: Validar form con javascript

Hola de nuevo, me quedo una última duda: cómo podría hacer para que cuando aparece el mensaje de error, además se ponga de color rojo el borde del input de texto. Y que cambie a color negro cuando los datos introducidos sean correctos.

Nose como incorporar este código al código dado por caricatos...

document.getElementById('input').style.bordercolor = 'red'

<input type="text" name="pepe" id="input"/>

Gracias
  #11 (permalink)  
Antiguo 02/12/2007, 23:47
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: Validar form con javascript

Hola:

Cuando los estilos son compuestos (esos que en la sección style se escriben con algún guión), en javascript debes quitar ese guión y capitalizar la letra siguiente... o sea que quedaría asi

document.getElementById('error').style.borderColor = (resultado) ? 'black':'red';

Tal vez tengas que invertir los colores (los puse tal como lo entendí)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #12 (permalink)  
Antiguo 03/12/2007, 08:27
Avatar de hgp147  
Fecha de Ingreso: diciembre-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 980
Antigüedad: 17 años, 4 meses
Puntos: 36
Re: Validar form con javascript

Gracias otra vez caricatos, fuciona muy bien.

Se puede resumir más este código? (Le agregue que también cambie a color rojo el texto cuando los datos son incorrectos)

Código HTML:
<html>
<head>
<script type="text/javascript">


function validar(frm) {
  var resultado1 = frm.pepe.value.length > 3;
  var resultado2 = frm.pepe2.value.length > 3;
  document.getElementById('error').style.visibility = (resultado1) ? 'hidden':'visible';
  document.getElementById('input').style.borderColor = (resultado1) ? 'black':'red';
  document.getElementById('input').style.color = (resultado1) ? 'black':'red';
  
  document.getElementById('error2').style.visibility = (resultado2) ? 'hidden':'visible';
  document.getElementById('input2').style.borderColor = (resultado2) ? 'black':'red';
  document.getElementById('input2').style.color = (resultado2) ? 'black':'red';
    
  return  (resultado1 && resultado2);
}
</script>  
</head>
<body>
<form action="procesa.php" method="post" onsubmit="return validar(this)">

<input type="text" name="pepe" id="input" style="border-width: 1px; border-style: solid; border-color: black"/>
<p id="error" style="visibility:hidden">Longitud inválida</p>

<input type="text" name="pepe2" id="input2" style="border-width: 1px; border-style: solid; border-color: black"/>
<p id="error2" style="visibility:hidden">Longitud inválida2</p>

<input type="submit" />
</form>
</body>
</html> 

Última edición por hgp147; 03/12/2007 a las 08:55
  #13 (permalink)  
Antiguo 03/12/2007, 18:00
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 3 meses
Puntos: 21
Re: Validar form con javascript

Excelente aporte, funciona de maravilla.

Podrías cambiar el segundo campo para que obligue a sea una direccion de email ?

Saludos
  #14 (permalink)  
Antiguo 03/12/2007, 18:38
Avatar de hgp147  
Fecha de Ingreso: diciembre-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 980
Antigüedad: 17 años, 4 meses
Puntos: 36
Re: Validar form con javascript

Hola Bier, Sería así:

Código HTML:
<html>
<head>

<script type="text/javascript">

function validar(frm) {

  var resultado1 = frm.pepe.value.length > 3;
  var resultado2 = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,6})$/.test(frm.pepe2.value);
  
  document.getElementById('error').style.visibility = (resultado1) ? 'hidden':'visible';
  document.getElementById('input').style.borderColor = (resultado1) ? 'black':'red';
  document.getElementById('input').style.color = (resultado1) ? 'black':'red';
  
  document.getElementById('error2').style.visibility = (resultado2) ? 'hidden':'visible';
  document.getElementById('input2').style.borderColor = (resultado2) ? 'black':'red';
  document.getElementById('input2').style.color = (resultado2) ? 'black':'red';
    
  return  (resultado1 && resultado2);
}

</script>

</head>
<body>
<form action="procesa.php" method="post" onsubmit="return validar(this)">

<input type="text" name="pepe" id="input" style="border-width: 1px; border-style: solid; border-color: black"/>
<p id="error" style="visibility:hidden">Longitud inválida</p>

<input type="text" name="pepe2" id="input2" style="border-width: 1px; border-style: solid; border-color: black"/>
<p id="error2" style="visibility:hidden">E-mail inválido</p>

<input type="submit" />

</form>

</body>
</html> 

Última edición por hgp147; 10/12/2007 a las 15:16
  #15 (permalink)  
Antiguo 03/12/2007, 18:56
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 3 meses
Puntos: 21
Re: Validar form con javascript

Eres un mago hgp147,
Saludos
  #16 (permalink)  
Antiguo 03/12/2007, 19:00
Avatar de hgp147  
Fecha de Ingreso: diciembre-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 980
Antigüedad: 17 años, 4 meses
Puntos: 36
Re: Validar form con javascript

Gracias Bier, hay que decir también que sin la ayuda de JavierB, Snd234 y caricatos no hubiera sido posible.
  #17 (permalink)  
Antiguo 04/12/2007, 01:13
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: Validar form con javascript

Cita:
Iniciado por hgp147 Ver Mensaje
...
Se puede resumir más este código? (Le agregue que también cambie a color rojo el texto cuando los datos son incorrectos)
...
Aunque me parece difícil resumir ese código, para las asignaciones condicionales se pueden crear variables del tipo array indexadas por valores lógicos (true/false) por ejemplo:
Código:
var visible = new Array(); visible[false] = "hidden"; visible[true] = "visible";
Y para simplificar se puede crear un alias del document.getElementById... a mi me gusta usar tag:
Código:
function tag(id) {return document.getElementBtId(id);}
Con eso, se podría luego poner:

Código:
with(tag("error")).style 
	visibility = visible[resultado1];
Como expuse antes no resumimos nada, pero sí que se puede conseguir más legibilidad

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #18 (permalink)  
Antiguo 04/12/2007, 12:38
Avatar de hgp147  
Fecha de Ingreso: diciembre-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 980
Antigüedad: 17 años, 4 meses
Puntos: 36
Re: Validar form con javascript

Gracias caricatos por tu ayuda! Sabes un montón
  #19 (permalink)  
Antiguo 07/12/2008, 18:50
 
Fecha de Ingreso: noviembre-2008
Mensajes: 67
Antigüedad: 15 años, 5 meses
Puntos: 0
Pregunta Respuesta: Validar form con javascript

Hola, muy bueno el script, me sirvio... Pero tengo una pregunta ya que soy medio burro... Como validamos un checkbox? O sea, si el checkbox no esta con el tic, de error, y si esta clikeado, q pase .... que le tengo q agregar?

saludos y espero q me ayuden xD
  #20 (permalink)  
Antiguo 07/12/2008, 19:12
 
Fecha de Ingreso: junio-2004
Mensajes: 266
Antigüedad: 19 años, 10 meses
Puntos: 8
Respuesta: Validar form con javascript

Has pensado la posibilidad de usar JQuery con Validate y Forms?
__________________
WebSenior
  #21 (permalink)  
Antiguo 08/12/2008, 00:06
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Validar form con javascript

Hola:

Tanto para los checkboxes como para los radios, la forma de validar es consultando su atributo checked... se pone a true cuando está chequeado y falso en el caso contrario.

if (elemento.cheched == true) o de forma simplificada if (elemento.checked)...

Como el tema es viejo paso a cerrarlo , y si no sirve la respuesta no dudes en abrir un tema nuevo, siempre puedes referenciar los temas viejos.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 10:17.