Foros del Web » Programando para Internet » PHP »

Se envia solo el form, ignorando la validacion JS

Estas en el tema de Se envia solo el form, ignorando la validacion JS en el foro de PHP en Foros del Web. Hola, estube haciendo un formulario de registro de usuarios para el CMS que estamos haciendo la gente de Foros Del Web, y bueno, quise validar ...
  #1 (permalink)  
Antiguo 12/09/2011, 10:00
 
Fecha de Ingreso: septiembre-2011
Mensajes: 38
Antigüedad: 12 años, 7 meses
Puntos: 5
Se envia solo el form, ignorando la validacion JS

Hola, estube haciendo un formulario de registro de usuarios para el CMS que estamos haciendo la gente de Foros Del Web, y bueno, quise validar el form con JS, y si dejo en blanco algun campo, salta el error de que tengo que añadir email, nombre, o lo que sea, pero cuando doy en Aceptar, salta a enviarlo, y lo envia con datos en blanco, y me gustaria que cuando diese en Aceptar, vuelva al formulario, no se si me explico...

El codigo que tengo:

Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<
title>Formulario de Registro</title>
<
link href="../estilos/estilo.css" rel="stylesheet" type="text/css" />
</
head>

<
body>
<
script language="javascript">  
//funcion
function valida_envia(){
    
//valido el nombre
    
if (document.registro.usuario.value.length==0){
       
alert("Tiene que escribir un usuario")
       
document.registro.usuario.focus()
       return 
0;
    }
    
//valido las password
    
if (document.registro.pass.value.length==0){
       
alert("Tiene que escribir una contraseña")
       
document.registro.pass.focus()
       return 
0;
    }
    
    if (
document.registro.pass2.value.length==0){
       
alert("Tiene que escribir una contraseña")
       
document.registro.pass2.focus()
       return 
0;
    }
    
//valido el email
    
if (document.registro.email.value.length==0){
       
alert("Tiene que escribir un E-Mail")
       
document.registro.email.focus()
       return 
0;
    }
    
//el formulario se envia
    
alert("Muchas gracias por enviar el formulario");
    
document.registro.submit();

</script>
<div align="center">
  <table width="500" border="0" cellspacing="0" cellpading="0">
    <tr>
      <td>Bienvenido al formulario de registro, registr&aacute;ndote podr&aacute;s hacer muchas mas cosas que siendo un usuario normal, podr&aacute;s tener un perfil modificable, realizar comentarios con un nick fijo, y podr&aacute;s a&ntilde;adir una URL en los comentarios para que cualquiera pueda verla. </td>
    </tr>  
  </table><br />
  <form id="registro" name="registro" method="post" action="registrar.php">
  <table width="500" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td width="250" align="right">
        <label>Usuario(max. 20):          </label>      </td>
      <td width="250" align="left"><input name="usuario" type="text" id="usuario" size="30" maxlength="20" /></td>
    </tr>
    <tr>
      <td width="250" align="right"><label>Contraseña:</label></td>
      <td width="250" align="left"><input name="pass" type="password" id="pass" size="30" /></td>
    </tr>
    <tr>
      <td width="250" align="right"><label>Repite la Contraseña:</label></td>
      <td width="250" align="left"><input name="pass2" type="password" id="pass2" size="30" /></td>
    </tr>
    <tr>
      <td width="250" align="right"><label>E-Mail:</label></td>
      <td width="250" align="left"><input name="email" type="text" id="email" size="30" /></td>
    </tr>
    <tr>
      <td width="250" align="right">&nbsp;</td>
      <td width="250" align="left"><label>
        <input type="submit" name="Submit" value="Reg&iacute;strate!" onclick="valida_envia()" />
      </label></td>
    </tr>
  </table>
  </form>
</div>
</body>
</html> 
Un Saludo!!
  #2 (permalink)  
Antiguo 12/09/2011, 10:50
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Se envia solo el form, ignorando la validacion JS

Saludos

Con unas pequeñas modificaciones, podria funcionarte de la siguiente manera:

Código PHP:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  5. <title>Formulario de Registro</title>
  6. <link href="../estilos/estilo.css" rel="stylesheet" type="text/css" />
  7. </head>
  8.  
  9. <body>
  10. <script language="javascript">
  11. //funcion
  12. function valida_envia(){
  13.     //valido el nombre
  14.     if (document.registro.usuario.value.length==0){
  15.        alert("Tiene que escribir un usuario")
  16.        document.registro.usuario.focus()
  17.        return false;
  18.     }
  19.     //valido las password
  20.     if (document.registro.pass.value.length==0){
  21.        alert("Tiene que escribir una contraseña")
  22.        document.registro.pass.focus()
  23.        return false;
  24.     }
  25.  
  26.     if (document.registro.pass2.value.length==0){
  27.        alert("Tiene que escribir una contraseña")
  28.        document.registro.pass2.focus()
  29.        return false;
  30.     }
  31.     //valido el email
  32.     if (document.registro.email.value.length==0){
  33.        alert("Tiene que escribir un E-Mail")
  34.        document.registro.email.focus()
  35.        return false;
  36.     }
  37.     //el formulario se envia
  38.     alert("Muchas gracias por enviar el formulario");
  39.     document.registro.submit();
  40. }
  41. </script>
  42. <div align="center">
  43.   <table width="500" border="0" cellspacing="0" cellpading="0">
  44.     <tr>
  45.       <td>Bienvenido al formulario de registro, registr&aacute;ndote podr&aacute;s hacer muchas mas cosas que siendo un usuario normal, podr&aacute;s tener un perfil modificable, realizar comentarios con un nick fijo, y podr&aacute;s a&ntilde;adir una URL en los comentarios para que cualquiera pueda verla. </td>
  46.     </tr>
  47.   </table><br />
  48.   <form id="registro" name="registro" method="post" action="registrar.php" onsubmit="return valida_envia();">
  49.   <table width="500" border="0" cellspacing="0" cellpadding="0">
  50.     <tr>
  51.       <td width="250" align="right">
  52.         <label>Usuario(max. 20):          </label>      </td>
  53.       <td width="250" align="left"><input name="usuario" type="text" id="usuario" size="30" maxlength="20" /></td>
  54.     </tr>
  55.     <tr>
  56.       <td width="250" align="right"><label>Contraseña:</label></td>
  57.       <td width="250" align="left"><input name="pass" type="password" id="pass" size="30" /></td>
  58.     </tr>
  59.     <tr>
  60.       <td width="250" align="right"><label>Repite la Contraseña:</label></td>
  61.       <td width="250" align="left"><input name="pass2" type="password" id="pass2" size="30" /></td>
  62.     </tr>
  63.     <tr>
  64.       <td width="250" align="right"><label>E-Mail:</label></td>
  65.       <td width="250" align="left"><input name="email" type="text" id="email" size="30" /></td>
  66.     </tr>
  67.     <tr>
  68.       <td width="250" align="right">&nbsp;</td>
  69.       <td width="250" align="left"><label>
  70.         <input type="submit" name="Submit" value="Reg&iacute;strate!"  />
  71.       </label></td>
  72.     </tr>
  73.   </table>
  74.   </form>
  75. </div>
  76. </body>
  77. </html>
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #3 (permalink)  
Antiguo 12/09/2011, 14:25
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Se envia solo el form, ignorando la validacion JS

La clave de todo, era el return valida_envia();, donde, si algo fallaba, deberia devolver falso para cancelar el envio y realmente no importa si esta dentro de <form> como onsubmit o dentro del boton como onclick.

La sugerencia de Nano_ es correcta, aunque creo que seria conveniente devolver true en lugar de hacer el submit desde la funcion y, el manejo del formulario por nombre seria mejor por id: document.getElementById('id_de_elemento')... aunque, a final de cuentas, esto se basa mas en preferencias.
__________________
- León, Guanajuato
- GV-Foto
  #4 (permalink)  
Antiguo 12/09/2011, 14:29
 
Fecha de Ingreso: septiembre-2011
Mensajes: 38
Antigüedad: 12 años, 7 meses
Puntos: 5
Respuesta: Se envia solo el form, ignorando la validacion JS

Muchas Gracias a los 2!! Me está sirviendo!!

Etiquetas: envia, html, js, registro, formulario, usuarios
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 15:35.