Foros del Web » Programando para Internet » Javascript »

Pequeño problema en formlario

Estas en el tema de Pequeño problema en formlario en el foro de Javascript en Foros del Web. Hola, estoy haciendo una web, y tengo un problema con el formulario de contacto. Funciona correctamente, pero si no se rellenan los "campos" y se ...
  #1 (permalink)  
Antiguo 12/03/2009, 10:03
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Ubicación: España
Mensajes: 260
Antigüedad: 16 años, 1 mes
Puntos: 2
Pequeño problema en formlario

Hola, estoy haciendo una web, y tengo un problema con el formulario de contacto. Funciona correctamente, pero si no se rellenan los "campos" y se "envia" se recibe un mensaje en blanco.

Como lo puedo hacer para que esto no ocurra? que funcion hace esto?

Mi codigo es este:

function enviar(){

name = document.form2.Nombre.value;
ape = document.form2.Apellidos.value;
mail = document.form2.Email.value;
com = document.form2.Comentario.value;

if(name == ""){
alert("El campo 'Nombre' es obligatorio");
document.form2.Nombre.focus();
return;
}
if(ape == ""){
alert("El campo 'Apellidos' es obligatorio");
document.form2.Apellidos.focus();
return;
}
if(Email == ""){
alert("El campo 'E-mail' es obligatorio");
document.form2.Email.focus();
return;
}
else{
if(Email.indexOf("@") == -1 || Email.indexOf("@") != Email.lastIndexOf("@")){
alert("Direccion de 'E-mail' incorrecto");
document.form2.Email.value="";
document.form2.Email.focus();
return;
}
}
if(com == ""){
alert("Introduzca su comentario");
document.form2.Comentario.focus();
}
else{
alert("Formulario enviado correctamente");
document.form2.Nombre.value="";
document.form2.Apellidos.value="";
document.form2.Email.value="";
document.form2.Comentario.value="";

}

}

Que os parece? como puedo solucionar que no se envie el formulario si esta en blanco?
  #2 (permalink)  
Antiguo 12/03/2009, 12:31
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Pequeño problema en formlario

No entiendo lo que quieres decir. ¿A qué te refieres con que recibe un mensaje en blanco?

Prueba a poner return false en lugar de return y lo llamas desde el evento onsubmit.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 12/03/2009, 14:56
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Ubicación: España
Mensajes: 260
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: Pequeño problema en formlario

haer, si tu envez de rellenar el formulario, clicas directamente a al boton enviar "submit", sin rellenar nada, yo recibo el mensaje pero sin nada...

Nombre:"..........."

Apellidos: "..........."

email: "..........."

Comentario: "..........."

asi me sale, en blanco, que tengo que hacer para que no ejecute esta funcion si no me escriben nada en el formulario?

Saludos
  #4 (permalink)  
Antiguo 12/03/2009, 20:56
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Pequeño problema en formlario

Como te dije, sustituye todos los return; por return false;

Además, llama a la función en el onsubmit de esta manera:
Código html:
Ver original
  1. onsubmit="return enviar();"
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 13/03/2009, 04:03
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Ubicación: España
Mensajes: 260
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: Pequeño problema en formlario

He puesto el return false; i nada... me hace lo mismo. Y donde tengo que poner "onsubmit="return enviar();" en el function ....() {}


function onsubmit= return enviar(){

}

O como?

No hay ninguna manera de que si no cumple el primer "if" termine la funcion? poniendo "else" end o fin...
  #6 (permalink)  
Antiguo 13/03/2009, 06:38
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Pequeño problema en formlario

No, el onsubmit debes ponerlo en el tag <form>.

P.S.: ¿Cómo estás llamando a la función en este momento?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 13/03/2009, 07:19
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Ubicación: España
Mensajes: 260
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: Pequeño problema en formlario

function enviar(){
----------------
----------------
}

Voy a provar, haver...
  #8 (permalink)  
Antiguo 13/03/2009, 07:21
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Pequeño problema en formlario

No, esa es la definición de la función. Lo que quiero saber es en qué momento llamas a la función, en qué evento y en qué elemento.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #9 (permalink)  
Antiguo 13/03/2009, 07:26
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Ubicación: España
Mensajes: 260
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: Pequeño problema en formlario

Pues cuando le das asl boton de enviar:

<div id="enviar">
<input type="submit" name="boton" value="Enviar" onclick="enviar()" method="post" action="/cgibin/FormMail.pl" />

<input type="reset" Value="Borrar" />
</div>

Hora he puesto en el <form> lo del "onsubmit= return enviar(){"... y funciona, si no pones nada te sale la ventana diciendote que es obligatorio poner el nombre y no havance y no se envia el formulario en "blanco".

Ire provando con cada 1, haver si funciona correctamente.

Saludos
  #10 (permalink)  
Antiguo 13/03/2009, 07:27
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Ubicación: España
Mensajes: 260
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: Pequeño problema en formlario

me falla a partir de apellidos, tendre que revisar el codigo... haver.
  #11 (permalink)  
Antiguo 13/03/2009, 07:33
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Ubicación: España
Mensajes: 260
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: Pequeño problema en formlario

Ves algo mal apartir de aqui¿? aqui me falla, nombre y apellidos si funciona, si no pones nada no continua, pero en email y comentario, si no pones nada si continua y se envia el formulario con los campos nombrados en "blanco".

if(Email == ""){
alert("El campo 'E-mail' es obligatorio");
document.form2.Email.focus();
return false;
}
else{
if(Email.indexOf("@") == -1 || Email.indexOf("@") != Email.lastIndexOf("@")){
alert("Direccion de 'E-mail' incorrecto");
document.form2.Email.value="";
document.form2.Email.focus();
return false;
}
}
if(com == ""){
alert("Introduzca su comentario");
document.form2.Comentario.focus();
return false;
}
else{
alert("Formulario enviado correctamente");
document.form2.Nombre.value="";
document.form2.Apellidos.value="";
document.form2.Email.value="";
document.form2.Comentario.value="";

}

Saludos
  #12 (permalink)  
Antiguo 13/03/2009, 07:35
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Pequeño problema en formlario

Sí, y es que tu variable se llama mail, no Email.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #13 (permalink)  
Antiguo 13/03/2009, 07:38
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Ubicación: España
Mensajes: 260
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: Pequeño problema en formlario

Ostras, es cierto, esque como lo cambie, para que el nombre me saliera Email, envez de mail, y sin querer cambi el nombre de la variable.

Madre mia... jajejajja, sorry y gracias por tu tiempo compañero!

Saludos
  #14 (permalink)  
Antiguo 13/03/2009, 07:39
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Pequeño problema en formlario

Me alegra que lo soluciones:

P.S.: ¿Por qué pusiste el method y el action en el input submit cuando deberían ir en el form?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #15 (permalink)  
Antiguo 13/03/2009, 07:41
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Ubicación: España
Mensajes: 260
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: Pequeño problema en formlario

Pues la verdad, esque el form lo ya lo tenia hecho de cuando hice el curso de disseño web, creo recordar que nos los enseño el profe, nose... tonces lo quito.

PD: ahora me pasa lo mismo pero con el "comentario", haver si haveriguo lo que tengo mal.

Saludos
  #16 (permalink)  
Antiguo 13/03/2009, 07:52
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Ubicación: España
Mensajes: 260
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: Pequeño problema en formlario

Joe, tu ves algo? porqe yo no...

if(com == ""){
alert("Introduzca su comentario");
document.form2.Comentario.focus();
return false;
}
else{
alert("Formulario enviado correctamente");
document.form2.Nombre.value="";
document.form2.Apellidos.value="";
document.form2.Email.value="";
document.form2.Comentario.value="";

}

Saludos
  #17 (permalink)  
Antiguo 13/03/2009, 07:57
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Pequeño problema en formlario

En principio no parece haber error. Pero, me pregunto, ¿por qué vacías los valores de los campos del formulario? Si lo haces, el formulario se enviará vacío.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #18 (permalink)  
Antiguo 13/03/2009, 08:01
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Ubicación: España
Mensajes: 260
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: Pequeño problema en formlario

Ok, ya lo he quetado, pero sigue igual...

Saludos
  #19 (permalink)  
Antiguo 13/03/2009, 08:09
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Pequeño problema en formlario

¿Puedes poner el código del formulario tal como lo tienes ahora?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #20 (permalink)  
Antiguo 13/03/2009, 08:43
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Ubicación: España
Mensajes: 260
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: Pequeño problema en formlario

<form method="POST" action="/cgibin/FormMail.pl" name="form2" onsubmit="return enviar()">

<input type="hidden" name="recipient" value="[email protected]" />

<input type="hidden" name="subject" value="Tiene 1 nuevo mensaje: Formulario de contacto"/>

<input type="hidden" name="redirect" value="http://www.jjfemar.es" />

<input type="hidden" name="realname" value="Mensaje web" />

<div class="bloque2">
<div class="titulo">
Nombre:
</div>
<div class="campo">
<input type="text" name="Nombre" value="" />
</div>
</div>

<div class="bloque2">
<div class="titulo">
Apellidos:
</div>
<div class="campo">
<input type="text" name="Apellidos" value="" />
</div>
</div>

<div class="bloque2">
<div class="titulo">
E-mail:
</div>
<div class="campo">
<input type="text" name="Email" value="" />
</div>
</div>

<div class="bloque2">
<div class="titulo">
Deje su comentario:
</div>
<div class="campo">
<textarea name="Comentario" value="" rows="8" cols="35" maxlength="30" size="10" ></textarea>
</div>
</div>

esto es...



<div class="bloque2">
<div id="enviar">
<input type="submit" name="boton" value="Enviar" onclick="enviar()" method="post" action="/cgibin/FormMail.pl" />
<input type="reset" Value="Borrar" />
</div>
</div>
</form>
  #21 (permalink)  
Antiguo 13/03/2009, 08:49
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Pequeño problema en formlario

Para empezar deja tu input submit así, quitando todo lo innecesario (lo que pertenece al <form>):
Código html:
Ver original
  1. <input type="submit" name="boton" value="Enviar" />

P.S.: Tu formulario tiene una divitis aguda (exceso de div, recuerda que puedes usar el tag <label> para mostrar el texto relacionado con el campo).
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #22 (permalink)  
Antiguo 13/03/2009, 08:52
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Ubicación: España
Mensajes: 260
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: Pequeño problema en formlario

Pero los "div" es para que el formulario este ordenado... asi todo esta en la misma posicion.

Saludos
  #23 (permalink)  
Antiguo 13/03/2009, 08:54
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Pequeño problema en formlario

Créeme, puedes lograr el mismo efecto sin toda esa cantidad de divs que sólo ensucian el código.

Pero bueno, esa era sólo una observación y no el foco del problema, ¿ya corregiste el input submit? ¿Cuál es el resultado en este momento?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #24 (permalink)  
Antiguo 13/03/2009, 08:55
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Ubicación: España
Mensajes: 260
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: Pequeño problema en formlario

Si... el mismo, sigue pasando igual.

Saludos
  #25 (permalink)  
Antiguo 13/03/2009, 09:00
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Pequeño problema en formlario

Revisa la Consola de Errores de tu navegador para ver si está dando algún error.

Si no logras encontrar el error, copia la función de validación como lo tienes ahora, para que podamos ver el error.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #26 (permalink)  
Antiguo 13/03/2009, 09:31
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Ubicación: España
Mensajes: 260
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: Pequeño problema en formlario

Ok, me daba error de la varieble mail... y es que solo cambie la primera:

if(mail.indexOf("@") == -1 || Email.indexOf("@") != Email.lastIndexOf("@")){

Bien, despues de estas provando y provando, parece que ya funciona bien... si todo perfecto.

Saludos y gracias!
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 06:38.