Foros del Web » Programando para Internet » Javascript »

problema con validación de formulario

Estas en el tema de problema con validación de formulario en el foro de Javascript en Foros del Web. Hola a todos! Es la primera vez que hago un formulario que valide los campos antes de enviar... he seguido otros posts del foro... pero ...
  #1 (permalink)  
Antiguo 15/08/2010, 15:43
 
Fecha de Ingreso: septiembre-2007
Mensajes: 41
Antigüedad: 16 años, 7 meses
Puntos: 0
problema con validación de formulario

Hola a todos! Es la primera vez que hago un formulario que valide los campos antes de enviar... he seguido otros posts del foro... pero tengo un error y no logro solucionarlo. El script valida, sale el pop up indicando que falta completar un campo, pero luego el formulario es enviado igual, a pesar del error. Me ayudan? gracias desde ya...

Este es mi script:

Código:
<script>
function valida_envia(){ 
    //valido el nombre 
    if (document.fvalida.nombre.value.length==0){ 
       alert("Tiene que escribir su nombre") 
       document.fvalida.nombre.focus() 
       return false; 
    } 

        //valido el mail 
    if (document.fvalida.email.value.length==0){ 
       alert("Tiene que escribir su e-mail") 
       document.fvalida.nombre.focus() 
       return false; 
    } 

    //valido el telefono 
    if (document.fvalida.telefono.selectedIndex==0){ 
       alert("Tiene que escribir su telefono.") 
       document.fvalida.interes.focus() 
       return false; 
    } 

    //valido el celular 
    if (document.fvalida.celular.selectedIndex==0){ 
       alert("Tiene que escribir su celular.") 
       document.fvalida.interes.focus() 
       return false; 
    } 

    //valido el mensaje 
    if (document.fvalida.mensaje.selectedIndex==0){ 
       alert("Tiene que escribir su mensaje.") 
       document.fvalida.interes.focus() 
       return false; 
    } 

    //el formulario se envia 
    alert("Muchas gracias por enviar el formulario"); 
    document.fvalida.submit(); 
} 
</script>
y este es mi formulario:

Código:
<form id="fvalida" name="fvalida" method="post" action="enviar.php" onSubmit="javascript:return validar();">
                  <label>
                  <p align="center"><span class="style2">Nombre:</span>
                    <input name="nombre" type="text" id="nombre" size="64" />
                  </p>
                  <p align="center" class="style2">
                    <label>E-Mail:
                    <input name="email" type="text" id="email" size="66" />
                    </label>
                  </p>
                  <p align="center" class="style2">
                    <label>Teléfono Fijo:
                    <input name="telefono" type="text" id="telefono" size="58" />
                    </label>
                  </p>
                  <p align="center" class="style2">
                    <label>Celular:
                    <input name="celular" type="text" id="celular" size="65" />
                    </label>
                  </p>
                  <p align="center" class="style2">
                    <label>Mensaje:
                    <textarea name="mensaje" id="mensaje" cols="60" rows="8"></textarea>
                    </label>
                  </p>
                  <p align="center" class="style2">
                    <label>
                    <input type="submit" name="enviar" id="enviar" value="Enviar" onclick="valida_envia()"/>
                    </label>
                  </p>
                </form>
  #2 (permalink)  
Antiguo 15/08/2010, 16:13
Avatar de lair  
Fecha de Ingreso: enero-2009
Ubicación: header('Location: Morelia");
Mensajes: 1.052
Antigüedad: 15 años, 4 meses
Puntos: 46
Respuesta: problema con validación de formulario

Hola.

prueba cambiando tu boton de envio
cambia esto:
<input type="submit" name="enviar" id="enviar" value="Enviar" onclick="valida_envia()"/>
por esto:
<input type="button" name="enviar" id="enviar" value="Enviar" onclick="valida_envia()"/>

suerte.
  #3 (permalink)  
Antiguo 15/08/2010, 16:43
 
Fecha de Ingreso: septiembre-2007
Mensajes: 41
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: problema con validación de formulario

muchas gracias lair, funciona perfecto

mientras he seguido leyendo y creo que debería mejorar mi validación en el campo e-mail, corregir la función para que verifique un e-mail válido en lugar de que solamente rellene el campo con algo

pero no se cómo modificar lo que ya tengo... me ayudas?

gracias desde ya
  #4 (permalink)  
Antiguo 15/08/2010, 17:58
Avatar de lair  
Fecha de Ingreso: enero-2009
Ubicación: header('Location: Morelia");
Mensajes: 1.052
Antigüedad: 15 años, 4 meses
Puntos: 46
Respuesta: problema con validación de formulario

Claro.

para hacer ese tipo de validaciones necesitas hacer uso de Expresiones Regulares

cambia tu if del mail por este:

if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3,4})+$/.test(document.fvalida.email.value))

Suerte.

La informacion la saque de aqui:
http://lineadecodigo.com/javascript/...on-javascript/
  #5 (permalink)  
Antiguo 15/08/2010, 18:18
 
Fecha de Ingreso: septiembre-2007
Mensajes: 41
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: problema con validación de formulario

nop, no funciona...
si el e-mail no es correcto, no sale ningún aviso... el formulario se envía... y en el mail que recibo aparece vacío el dato de e-mail... como si no hubieran escrito nada...
  #6 (permalink)  
Antiguo 15/08/2010, 18:33
Avatar de lair  
Fecha de Ingreso: enero-2009
Ubicación: header('Location: Morelia");
Mensajes: 1.052
Antigüedad: 15 años, 4 meses
Puntos: 46
Respuesta: problema con validación de formulario

Prueba con estas expresiones, tambien viene un breve tutorial de como construir tus expresiones
http://www.webintenta.com/validacion...avascript.html
  #7 (permalink)  
Antiguo 16/08/2010, 08:10
 
Fecha de Ingreso: septiembre-2007
Mensajes: 41
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: problema con validación de formulario

ok... probando probando... llegué a esta

Código:
    if ( /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3,4})+$/);{ 
       alert("Tiene que escribir un e-mail válido") 
       document.fvalida.email.focus() 
       return false; 
    }
pero resulta que no me acepta ningún e-mail... como que todos son inválidos....

gracias desde ya por tu tiempo...
  #8 (permalink)  
Antiguo 16/08/2010, 08:15
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: problema con validación de formulario

Hola

Si que es usada esa expresión. Aquí tienes el problema resuelto

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #9 (permalink)  
Antiguo 16/08/2010, 08:24
 
Fecha de Ingreso: septiembre-2007
Mensajes: 41
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: problema con validación de formulario

Hola Adler

la corregí de esta manera:

Código:
    if (/^[0-9a-zA-Z]+(?:[._][0-9a-zA-Z]+)*@[0-9a-zA-Z]+(?:[._-][0-9a-zA-Z]+)*\.[0-9a-zA-Z]{2,4}$/);{ 
       alert("Tiene que escribir un e-mail válido") 
       document.fvalida.email.focus() 
       return false; 
    }
pero sigue sin funcionar, sigue saliendo el cartel de que debo escribir un correo válido
  #10 (permalink)  
Antiguo 16/08/2010, 08:28
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: problema con validación de formulario

Hola

Fíjate bien en código, no copies solamente la expresión
Cita:
if (/^[0-9a-zA-Z]+(?:[._][0-9a-zA-Z]+)*@[0-9a-zA-Z]+(?:[._-][0-9a-zA-Z]+)*\.[0-9a-zA-Z]{2,4}$/.test(valor)){
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #11 (permalink)  
Antiguo 16/08/2010, 08:34
 
Fecha de Ingreso: septiembre-2007
Mensajes: 41
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: problema con validación de formulario

con esta nueva modificación, al darle click al botón de enviar, no envía, no sale ningún pop up y me aparece el error en pagina en el navegador...

te iba a pedir que revisaras todo mi script... porque me da la impresión de que tengo algo mal...

Código:
<script>
function valida_envia(){ 
    //valido el nombre 
    if (document.fvalida.nombre.value.length==0){ 
       alert("Tiene que escribir su nombre") 
       document.fvalida.nombre.focus() 
       return false; 
    } 

        //valido el mail 
    if (/^[0-9a-zA-Z]+(?:[._][0-9a-zA-Z]+)*@[0-9a-zA-Z]+(?:[._-][0-9a-zA-Z]+)*\.[0-9a-zA-Z]{2,4}$/.test(valor)){ 
       alert("Tiene que escribir un e-mail válido") 
       document.fvalida.email.focus() 
       return false; 
    } 

    //valido el telefono 
    if (document.fvalida.telefono.value.length==0){ 
       alert("Tiene que escribir su telefono.") 
       document.fvalida.telefono.focus() 
       return false; 
    } 

    //valido el celular 
    if (document.fvalida.celular.value.length==0){ 
       alert("Tiene que escribir su celular.") 
       document.fvalida.celular.focus() 
       return false; 
    } 

    //valido el mensaje 
    if (document.fvalida.mensaje.value.length==0){ 
       alert("Tiene que escribir su mensaje.") 
       document.fvalida.mensaje.focus() 
       return false; 
    } 

    //el formulario se envia 
    alert("Muchas gracias por enviar el formulario"); 
    document.fvalida.submit(); 
} 
</script>
  #12 (permalink)  
Antiguo 16/08/2010, 08:36
 
Fecha de Ingreso: septiembre-2007
Mensajes: 41
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: problema con validación de formulario

en el otro post... en la función aparece (valor)

function validarEmail(valor) {

en cambio en la mía no... porque tengo una función para todo...
  #13 (permalink)  
Antiguo 16/08/2010, 08:41
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: problema con validación de formulario

Hola

valor en tu caso es document.fvalida.email.value

suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #14 (permalink)  
Antiguo 16/08/2010, 08:54
 
Fecha de Ingreso: septiembre-2007
Mensajes: 41
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: problema con validación de formulario

ahora no valida el e-mail... osea... coloco cualquier palabra, sin arroba, sin .com y manda el formulario sin ningún pop up
=(
  #15 (permalink)  
Antiguo 16/08/2010, 08:55
 
Fecha de Ingreso: septiembre-2007
Mensajes: 41
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: problema con validación de formulario

if (/^[0-9a-zA-Z]+(?:[._][0-9a-zA-Z]+)*@[0-9a-zA-Z]+(?:[._-][0-9a-zA-Z]+)*\.[0-9a-zA-Z]{2,4}$/.test(document.fvalida.email.value)){
alert("Tiene que escribir un e-mail válido")
document.fvalida.email.focus()
return false;
}
  #16 (permalink)  
Antiguo 16/08/2010, 11:07
Avatar de lair  
Fecha de Ingreso: enero-2009
Ubicación: header('Location: Morelia");
Mensajes: 1.052
Antigüedad: 15 años, 4 meses
Puntos: 46
Respuesta: problema con validación de formulario

Prueba con este codigo:

Código HTML:
Ver original
  1. <title>Ejemplo de función para validar dirección de email en javascript</title>
  2. <script language="JavaScript">
  3. function valEmail(){    // Cortesía de http://www.ejemplode.com
  4.         valor=document.getElementById('mail').value;
  5.     re=/^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})$/
  6.     if(!re.exec(valor))    {
  7.         alert("correo no valido");
  8.     }else{
  9.         alert("correo valido");
  10.     }
  11. }
  12.  
  13. <form action="ejemplode.com">
  14. Email:<input type="text" name="email" id='mail'>
  15. <input type="button" onClick="valEmail()">
  16. </form>
  17. </body>
  18. </html>
  #17 (permalink)  
Antiguo 16/08/2010, 11:32
 
Fecha de Ingreso: septiembre-2007
Mensajes: 41
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: problema con validación de formulario

pero este código... solo valida el e-mail...

cómo agrego ahí la validación de campo no vacío de todos los demás campos de mi formulario?

tengo:

nombre
e-mail
teléfono
celular
mensaje
  #18 (permalink)  
Antiguo 16/08/2010, 12:32
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: problema con validación de formulario

Hola

A ver, así
Código Javascript:
Ver original
  1. //valido el mail
  2. var valor = document.fvalida.email.value;
  3. var patron = /^[0-9a-zA-Z]+(?:[._][0-9a-zA-Z]+)*@[0-9a-zA-Z]+(?:[._-][0-9a-zA-Z]+)*\.[0-9a-zA-Z]{2,4}$/;
  4.    if (patron.test(valor)){
  5.        alert("Tiene que escribir un e-mail válido")
  6.        document.fvalida.email.focus()
  7.        return false;
  8.     }
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #19 (permalink)  
Antiguo 16/08/2010, 12:39
 
Fecha de Ingreso: septiembre-2007
Mensajes: 41
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: problema con validación de formulario

ahora si!!!!!! graciassssssssssssssssss

Etiquetas: formulario, 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 19:32.