Foros del Web » Programando para Internet » Javascript »

mejorar la validación de campos

Estas en el tema de mejorar la validación de campos en el foro de Javascript en Foros del Web. Hola muy buenas por fin he conseguido crear una validación de formulario, que me costo lo mio pues poco se de javascript, el caso es ...
  #1 (permalink)  
Antiguo 18/05/2012, 10:10
 
Fecha de Ingreso: agosto-2011
Ubicación: barcelona
Mensajes: 237
Antigüedad: 12 años, 8 meses
Puntos: 1
mejorar la validación de campos

Hola muy buenas por fin he conseguido crear una validación de formulario, que me costo lo mio pues poco se de javascript, el caso es si alguien me podria ayudar un poquito a mejorarlo pudiendo indicar por ejemplo que email sea un email correcto la contraseña un mínimo de caracteres cosas así.

y si se pueden cambiar los mensajes de alerta por una imagen propia o cambiar el titulo de la ventana.

este es el código supongo que es un código sinplon pero bueno por algo se empieza.
Código Javascript:
Ver original
  1. // JavaScript Document
  2. function valida_envia(){
  3.     //valido el nombre
  4.     if (document.form1.tienda.value.length==0){
  5.          alert("Tiene que escribir el nombre de su tienda")
  6.          document.form1.tienda.focus()
  7.         return false;
  8.     }
  9.     //valido email
  10.     if(document.form1.email.value.length==0) { //comprueba que no esté vacío
  11.         alert('No has escrito tu e-Mail correctamente');
  12.         document.form1.email.focus();
  13.         return false;
  14.   }
  15.  
  16.     //valido la contraseña.
  17.     if(document.form1.pasword.value.length==0) { //comprueba que no esté vacío
  18.         alert('No has escrito tu contraseña correctamente');
  19.         document.form1.pasword.focus();
  20.         return false;
  21.   }
  22.  
  23.     //valido el interés
  24.     if (document.form1.tipo_de_tienda.selectedIndex==0){
  25.          alert("Debe seleccionar un tipo de tienda.")
  26.          document.form1.tipo_de_tienda.focus()
  27.         return false;
  28.     }
  29.  
  30.     //el formulario se envia
  31.     alert("Muchas gracias por enviar el formulario");
  32.     document.form1.submit();
  33. }
  #2 (permalink)  
Antiguo 18/05/2012, 15:04
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: mejorar la validación de campos

un ejemplo para el email

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>titulo</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6.  
  7. <style type="text/css">
  8. /*<![CDATA[*/
  9. label{
  10. width: 150px;
  11. display: inline-block;
  12. }
  13.  
  14. /*]]>*/
  15. <script type="text/javascript">
  16.  
  17. function validar(){
  18. var nombre = document.getElementById('nombre').value;
  19. var email = document.getElementById('email').value;
  20. var email2 = document.getElementById('email2').value;
  21. var formato = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
  22.  
  23. // validamos si el campo nombre está vacío o no
  24. nombre = nombre.replace(/(<([^>]+)>)/ig,""); // quitás posible código html
  25. nombre = nombre.replace(/^\s+/g,'').replace(/\s+$/g,'');// limpias espacios en blanco al inicio y final del nombre
  26. if(nombre == ''){
  27. alert('Ingrese su nombre')
  28. return false;
  29. }
  30.  
  31. var regex_email = formato.test(email);
  32.  
  33. if((regex_email != true)||(email == "")){
  34. alert('Email no válido');
  35. return false;
  36. }
  37.  
  38. var regex_email2 = formato.test(email2);
  39.  
  40. if((regex_email2 != true)||(email2 == "")){
  41. alert('Email2 no válido');
  42. return false;
  43. }
  44.  
  45. if(email != email2){
  46. alert('los emails no coinciden');
  47. return false;
  48. }
  49. /// Si no hubo ningún error, el form se procesa
  50. alert('gracias ' + nombre);
  51. }
  52.  
  53. </script>
  54. </head>
  55. <div>
  56. <form action="#" onsubmit="return validar();">
  57. <label for="nombre">Nombre: </label><input type="text" value="" id="nombre" name="nombre" /><br />
  58. <label for="email">Email: </label><input type="text" value="" id="email" name="email" /><br />
  59. <label for="email2">Verificar Email: </label><input type="text" value="" id="email2" name="email2" /><br />
  60. <input type="submit" value="Enviar" />
  61. </form>
  62. </div>
  63. </body>
  64. </html>

las longitudes de las cadenas, tendrias que chequear la propiedad length

Para las alertas, crear una capa/span con un id asignado, por ejemplo
<span id="mensajes"></span>
y antes del return false; haces un innerHTML con el texto del error
Otra variante es que no hagas un return false por cada elemento validado, sino que lo hagas asi

al inicio de la función inicializás una variable con un valor = ""
var mensaje="";

en cada validacion por ejemplo, el nombre, en lugar de esto
if(nombre == ''){
alert('Ingrese su nombre')
return false;
}

hacés

if(nombre == ''){
mensaje += "<p>Falta nombre</p>";
}

se usa el += para concatenar los valores
después con otra

if((regex_email != true)||(email == "")){
mensaje += "<p>email no vválido</p>";
}


ahora si, trás todas las validaciones

if(mensaje != ""){
// haces un innerHTML a la capa que creaste con los mensajes con el valor de la variable mensaje
return false; // -> cancelás el submit
}

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Etiquetas: campos, formulario, mejorar, validar
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.
Respuesta




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