Validar Formulario

Que tal tengo un problema con un formulario que valida campos y envia la info a un archivo en php que a su vez muestra la info en pantalla y envia la información por email, el problema surge con la validación porque cuando la realiza automaticamente te envia a la pantalla con los datos vacios y envia el email de igual forma. Te pongo los codigos y gracias de antemano.
script validación
<script LANGUAGE="JavaScript">
function Validar(form)
{
if (form.Nombre.value == "")
{ alert("Por favor ingrese su nombre"); form.Nombre.focus(); return; }
if (form.Email.value == "")
{ alert("Por favor ingrese su dirección de e-mail"); form.Email.focus(); return; }
if (form.Telefono.value == "")
{ alert("Por favor ingrese su número de teléfono"); form.Telefono.focus(); return; }
if (form.Email.value.indexOf('@', 0) == -1 ||
form.Email.value.indexOf('.', 0) == -1)
{ alert("Dirección de e-mail inválida"); form.Email.focus(); return; }
form.submit();
}
</script>
formulario
<form method="POST" action="gc_formmail.php">
<table width="473" border="0">
<tr>
<td height="30" colspan="3" bgcolor="#FFCC33"><table width="100%" border="0">
<tr>
<td width="48%"><strong>Datos Personales</strong></td>
<td width="52%"><strong><b>*</b> Obligatorio</strong></td>
</tr>
</table></td>
</tr>
<tr>
<td width="165">* Nombre:</font></td>
<td width="298" height="24">
<input name="Nombre" id="Nombre">
</td>
</tr>
<tr>
<td height="24">* Apellido:</td>
<td height="24">
<input name=apellido>
</td>
</tr>
<tr>
<td height="24">* Teléfono:</td>
<td height="24">
<input name="Telefono" id="Telefono">
</td>
</tr>
<tr>
<td height="24"> Teléfono Casa:</td>
<td height="24">
<input name="TelefonoCasa" id="TelefonoCasa">
</td>
</tr>
<tr>
<td height="24"> Teléfono Oficina:</td>
<td height="24">
<input name="TelefonoOficina" id="TelefonoOficina">
</td>
</tr>
<tr>
<td height="24"> Tel. Celular:</td>
<td height="24">
<input name="Celular" id="Celular">
</td>
</tr>
<tr>
<td height="24"> Fax:</td>
<td height="24">
<input name=fax>
</td>
</tr>
<tr>
<td height="24">* E-Mail:</td>
<td height="24">
<input name="Email" id="Email">
</td>
</tr>
<tr>
<td height="24">Fecha del Evento </td>
<td height="24">
<input name="Fecha">
</td>
</tr>
<tr>
<td height="24"> No. De Invitados </td>
<td height="24">
<input name="Invitados">
</td>
</tr>
<tr></tr>
<TR align=middle bgColor="#FFCC33">
<TD height="30" colspan="2" vAlign=center><FONT
size=2><center><B>Solicitud de Información</B></center></FONT></TD>
</TR>
<TR bgColor="#FFFFFF">
<TD width="300" height="26" vAlign=top><div align="left">Tipo de Evento :
<select style="width:120px;height:50px;">
<option value= "Social"style="color:red;background-color:#FFCC33;">Social
<option value= "Empresarial"style="color:red;background-color:#FFCC33">Empresarial
<option value= "Especial"style="color:red;background-color:#FFCC33;">Especial
<select>
</div></TD>
<TD width="250" vAlign=top>
Lugares:
<select style="width:160px;height:50px;">
<option value= "Salones"style="color:red;background-color:#FFCC33;">Salones
<option value= "Jardines"style="color:red;background-color:#FFCC33">Jardines
<option value= "Haciendas"style="color:red;background-color:#FFCC33;">Haciendas
<option value= "Discotecas"style="color:red;background-color:#FFCC33;">Discotecas
<option value= "Bares"style="color:red;background-color:#FFCC33;">Bares
<option value= "Cortijos"style="color:red;background-color:#FFCC33;">Cortijos
<option value= "Rodeos"style="color:red;background-color:#FFCC33;">Rodeos
<option value= "Centro_Convenciones"style="color:red;background-color:#FFCC33;">Centro Convenciones
<option value= "Auditorios"style="color:red;background-color:#FFCC33;">Auditorios
<option value= "Balnearios"style="color:red;background-color:#FFCC33;">Balnearios
<option value= "En_sus_Instalaciones"style="color:red;background-color:#FFCC33;">En sus Instalaciones
<select>
</TD>
</TR>
<TR bgColor="#FFFFFF">
<TD height="20" vAlign=top><div align="left">
</div>
Alimentos:
<select style="width:150px;height:50px;">
<option value= "Comida_Formal"style="color:red;background-color:#FFCC33;">Comida Formal
<option value= "Taquiza"style="color:red;background-color:#FFCC33">Taquiza
<option value= "Parrillada"style="color:red;background-color:#FFCC33;">Parrillada
<option value= "Bufette"style="color:red;background-color:#FFCC33;">Buffete
<option value= "Desayuno"style="color:red;background-color:#FFCC33;">Desayuno
<option value= "Coffee-Break"style="color:red;background-color:#FFCC33;">Coffee Break
<option value=...

2 Respuestas

Respuesta
1
Estuve probando tu código y detecté un problema, el botón "enviar" es un botón de tipo submit, por lo tanto siempre enviará el formulario así esté incompleto, hay que cambiar el valor type por "button". O Sea:
<input type="buttton" name="enviar" value="enviar" onClick="Validar(this.form);">
Esto debería solucionar tu problema.
Atentamente. Manuel Fernández.
Respuesta
1
No he tenido apenas tiempo para revisar tu código, pero he detectado un problema bastante común a la hora de validar datos antes de enviarlos.
El problema consiste en usar un botón de tipo submit para enviar los datos. Cuando se pulsa a ese botón se ejecutará la función que le indicas con onClick, pero los datos se enviarán igualmente, sean correctos o no.
Por tanto, tienes que sustituir la parte de código:
<p><input type="submit" value="Enviar" onClick="Validar(this.form)"><input TYPE="reset"></p>
</form>
por:
<p><input type="button" value="Enviar" onClick="Validar(this.form)"><input TYPE="reset"></p>
</form>
De esa forma fuerzas a enviar solo los datos desde la función Validar al ejecutar form. Submit().
Pruebalo y me comentas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas