Foros del Web » Programando para Internet » Javascript »

Problema para enviar formulario

Estas en el tema de Problema para enviar formulario en el foro de Javascript en Foros del Web. Hola. Me gustaría si pudieran ayudarme con este problema: Tengo un formulario para enviar comentarios, éste se fija que el email sea válido, el nombre ...
  #1 (permalink)  
Antiguo 03/08/2007, 01:14
 
Fecha de Ingreso: agosto-2007
Mensajes: 1
Antigüedad: 17 años, 3 meses
Puntos: 0
Problema para enviar formulario

Hola.
Me gustaría si pudieran ayudarme con este problema:
Tengo un formulario para enviar comentarios, éste se fija que el email sea válido, el nombre esté escrito y también el comentario.
Ahora, mi problema es el siguiente. Una vez que los datos están validados me lleve a la página que está pasada en el formulario, pero SOLO si están válidos los 3 campos necesarios, sino están validados que no haga nada.
Desde ya muchas gracias.


Código HTML:
<script language="javascript" type="text/javascript">
 function validarEmail(valor) { 
  if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(valor)){
	  var Message="OK";
 // muestro mensaje de error en caso de que no se escriba el nombre
      document.getElementById("respeMail").innerHTML = 
                                            '<strong>' + Message + '</strong>';
   return (true)
  } else {
		  var Message="ERROR";
// muestro mensaje de error en caso de que no se escriba el nombre
      document.getElementById("respeMail").innerHTML = 
                                            '<strong>' + Message + '</strong>';
    return (false);
  }
 }
 
function validaNombre(form) // compruebo si nombre está escrito
{
 if(form.yourName.value == "" ||
                 form.yourName.value == null){
                  // Comprueba si contiene un string vacío o un valor nulo
		  var Message="ERROR";
// muestro mensaje de error en caso de que no se escriba el nombre
      document.getElementById("respName").innerHTML = 
                                            '<strong>' + Message + '</strong>';
              return(false);
			  }	  
 else{
	  var Message="OK";
 // muestro mensaje de error en caso de que no se escriba el nombre
      document.getElementById("respName").innerHTML = 
                                            '<strong>' + Message + '</strong>';
 	return(true);
 }
}

function validaComentario(form) // compruebo si nombre está escrito
{
 if(form.yourComment.value == "" ||
                 form.yourComment.value == null){
                  // Comprueba si contiene un string vacío o un valor nulo
		  var Message="ERROR";
// muestro mensaje de error en caso de que no se escriba el nombre
      document.getElementById("respComment").innerHTML = 
                                            '<strong>' + Message + '</strong>';
              return(false);
			  }	  
 else{
	  var Message="OK";
 // muestro mensaje de error en caso de que no se escriba el nombre
      document.getElementById("respComment").innerHTML = 
                                            '<strong>' + Message + '</strong>';
 	return(true);
 }
}
</script>
<link href="../design/style_form.css" rel="stylesheet" type="text/css">
// FORMULARIO
<div id="title_sendcomments">Env&iacute;a tu comentario</div><br />
<form method="post" action="post.php?post_id=<?php echo $_GET['post_id'];?>&send=ok">
<table width="200" border="0">
  <tr>
  <td id="respName">*</td>
    <td  class="text_form">
    <label>
      <input type="text" name="yourName" id="yourName" onBlur="return validaNombre(this.form);">
    </label>
    Tu Nombre</td>
  </tr>
  <tr>
    <td id="respeMail">*</td>
    <td  class="text_form">
    <label>
      <input type="text" name="youreMail" id="youreMail"  onBlur="return validarEmail(this.form.youreMail.value);">
    </label>
    Tu eMail</td>
  </tr>
  <tr>
    <td id="respName"></td>
    <td class="text_form">
    <label>
      <input type="text" name="yourWeb" id="yourWeb">
    </label>
    Tu Web</td>
  </tr>
  <tr>
    <td id="respComment">*</td>
    <td>
    <label>
    <textarea name="yourComment" cols="50" rows="15" id="yourComment" onBlur="return validaComentario(this.form);"></textarea>
    </label> </td>
  </tr>
  <tr>
    <td></td>
    <td align="right"><label>
      <input type="submit" name="btn_publicar" id="btn_publicar" value="Publicar comentarios" onClick="return send(this.form);">
    </label></td>
  </tr>
</table> 
  #2 (permalink)  
Antiguo 03/08/2007, 01:30
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Re: Problema para enviar formulario

Hola schxx, bienvenido a los foros :

La validación global de un formulario se debe hacer desde el propio formulario (etiqueta form) con el evento submit (onsubmit)... y a la función validadora anteponerle la palabra return... si hay que validar varios campos se hace la operación lógica oprtuna ("&&" -AND-).

Para cada función validadors debes preocuparte de que retorne el valor lógico true para el envío y false para cancelarlo (eso parece que lo estás haciendo bien)... Y los campos de texto debes compararlos con la cadena vacía y no con null (son cosas distintas)

Los botones submit no suelen tener cosas en el onclick salvo asignaciones de última hora.

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.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:42.