Foros del Web » Programando para Internet » Javascript »

Problema simple

Estas en el tema de Problema simple en el foro de Javascript en Foros del Web. A ver mi problema es simple, tengo un formulario y por mucho que controle con JS elenvio no me funciona, me explico, si por ejemplo ...
  #1 (permalink)  
Antiguo 23/07/2008, 01:59
 
Fecha de Ingreso: diciembre-2007
Mensajes: 149
Antigüedad: 16 años, 4 meses
Puntos: 1
Problema simple

A ver mi problema es simple, tengo un formulario y por mucho que controle con JS elenvio no me funciona, me explico, si por ejemplo en nombre lo pongo vacío me salta el alert pero sigue enviando el formulario, es como si el return no hiciera nada, os dejo el código aquí. Gracias, espero vuestra ayuda:

JS en head:

Código HTML:
<script language="javascript">
function validar_contacto()
{
	//document.fvalida.edad.value=edad 

	if(document.FrontPage_Form1.nombre.value.length==0)
	{
		alert("El campo 'nombre' no puede estar vacio");
		document.FrontPage_Form1.nombre.focus();
		return 0;
	}
	if(document.FrontPage_Form1.provincia.value.length==0)
	{
		alert("El campo 'provincia' no puede estar vacio");
		document.FrontPage_Form1.provincia.focus();
		return 0;
	}
	if(document.FrontPage_Form1.email.value.length==0)
	{
		alert("El campo 'email' no puede estar vacio");
		document.FrontPage_Form1.email.focus();
		return 0;
	}
 	/* Se verifica el dato escrito 
	Si no contiene el simbolo @ o . se ejecuta la condición */
	if(document.FrontPage_Form1.email.value.indexOf('@', 1) == -1 || document.FrontPage_Form1.email.value.indexOf('.',document.FrontPage_Form1.email.value.indexOf('@', 0)) == -1) 
	{
 		alert("Dirección de e-mail inválida"); 
		document.FrontPage_Form1.email.focus();
		return 0;
	}		
	if(document.FrontPage_Form1.asunto.value.length==0)
	{
		alert("El campo 'asunto' no puede estar vacio");
		document.FrontPage_Form1.asunto.focus();
		return 0;
	}	
	if(document.FrontPage_Form1.msg.value.length==0)
	{
		alert("El campo 'msg' no puede estar vacio");
		document.FrontPage_Form1.msg.focus();
		return 0;
	}	
	else
	{
		//document.FrontPage_Form1.submit(); 
	}
}
Formulario:

Código HTML:
<form name="FrontPage_Form1" id="frm" action="" method="post" enctype="multipart/form-data" language="JavaScript">
	<div align="center">
	<table border="0" id="table33" width="325" class="cuerpoForm"><!--DWLayoutTable-->
		<tr>
			<td align="right" width="111">
			<font class="textoForm">
			Su Empresa:</font></td>
			<td align="center" colspan="3">
			<p align="left">
			  <input type="text" class="cajasTextoForm" name="empresa" id="empresa" size="32" />		  
		  </td>
	    </tr>
		<tr>
			<td align="right" width="111">
			<font class="textoForm">
			Su Nombre: </font></td>
			<td align="center" colspan="3">
			<p align="left">
		<input type="text" class="cajasTextoForm" name="nombre" id="to" size="32" /> 
		* </td>
	    </tr>
		<tr>
			<td align="right" width="111">
			<font class="textoForm">
			Su Provincia:</font></td>
		    <td align="center" colspan="3">
			<p align="left">
		<input type="text" class="cajasTextoForm" name="provincia" id="to" size="32" /> 
		* </td>
	    </tr>
		<tr>
			<td align="right" width="111">
			<font class="textoForm">
			Su E-mail:</font></td>
			<td align="center" colspan="3">
			<p align="left">
		<input type="text" class="cajasTextoForm" name="email" id="to" size="32" /> 
		* </td>
	    </tr>
		<tr>
			<td width="111" height="40" align="right">
			<font class="textoForm">
			Teléfono:<br />
		  </font></td>
			<td width="71" align="center">
			<p align="left" style="margin-top:0; margin-bottom:0">
		<input type="text" class="cajasTextoForm" name="tel" id="to" size="13" /></td>
			<td colspan="2" align="left" valign="middle"><span class="textoMini">Si prefiere que le llamemos</span></td>
	    </tr>
		<tr>
			<td width="111">
		  <p align="right"><font class="textoForm">Hora de contacto :</font></td>
			<td width="71" align="center">
			<p align="left" style="margin-top:0; margin-bottom:0">
		<input type="text" class="cajasTextoForm" name="hora" id="to" size="13" /></td>
			<td width="23" align="right"><!--DWLayoutEmptyCell-->&nbsp;</td>
			<td width="99" align="left"><!--DWLayoutEmptyCell-->&nbsp;</td>
	    </tr>
		<tr>
			<td width="111">
		  <p align="right">&iquest;C&oacute;mo nos ha conocido?<font class="textoForm"></font></td>
			<td align="left" colspan="3">
			&nbsp;<!--webbot bot="Validation" s-display-name="Seleccione" b-value-required="TRUE" b-disallow-first-item="TRUE" -->
			<select name="nos_conocio" size="1" class="cajasTextoForm" id="nos_conocio">
			<option selected>Seleccione</option>
			<option value="Google">Google</option>
			<option value="Otros buscadores">Otros buscadores</option>
			<option value="Radio">Radio</option>
			<option value="Prensa/Revistas">Prensa/Revistas</option>
			<option value="P&aacute;ginas Amarillas">P&aacute;ginas Amarillas</option>
			<option value="Desde ortra web">Desde ortra web</option>
			<option value="Recomendaci&oacute;n">Recomendaci&oacute;n</option>
		    </select></td>
	    </tr>
		<tr>
			<td width="111" valign="top">
		  <p align="right"><font class="textoForm">Asunto:</font></td>
		  <td align="left" colspan="3">
			<dl>
			  <input type="text" class="cajasTextoForm" name="asunto" id="email" size="32" />
		*
		  </dl> </td>
        </tr>
		<tr>
			<td colspan="4" align="center">
			<font class="textoForm">&iquest;En qu&eacute; podemos ayudarle?*</font></td>
	    </tr>
		<tr>
			<td colspan="4">
			<p align="center">
		<textarea id="msg" name="msg" rows="7" cols="45" class="cajasTextoForm"></textarea></td>
	    </tr>
		<tr>
			<td colspan="4">
			<p align="center">
		
		<input type="submit" value="Enviar" id="postback" name="postback" accesskey="6" class="textoForm" onclick="validar_contacto()"/></td>
	    </tr>
		<tr>
			<td colspan="4">
		  <p align="center"> </td>
	    </tr>
	</table>
  </div>
<input type="hidden" name="to" value="[email protected]">
   	<input type="hidden" name="sbj" value="Contacto Web">
</form> 
  #2 (permalink)  
Antiguo 23/07/2008, 04:15
Avatar de neandertal  
Fecha de Ingreso: enero-2008
Ubicación: Barcelona
Mensajes: 79
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: Problema simple

Hola, el return funciona perfectamente.
El problema es que el boton es un submit y por eso te entra en el javascript y luego envia el formulario, tendrías que cambiar:
Código:
<input type="submit" value="Enviar" id="postback" name="postback" accesskey="6" class="textoForm" onclick="validar_contacto()"/>
por esto:
Código:
<input type="button" value="Enviar" id="postback" name="postback" accesskey="6" class="textoForm" onclick="validar_contacto()"/>
A parte de esto, no detectas cuando has dejado el mail vacio, no se si es que lo quieres asi pero si quisieras controlarlo tendrias que cambiar:
Código:
if(document.FrontPage_Form1.email.value.indexOf('@', 1) == -1 || document.FrontPage_Form1.email.value.indexOf('.',document.FrontPage_Form1.email.value.indexOf('@', 0)) == -1)
y quedaria asi:
Código:
if(document.FrontPage_Form1.email.value.indexOf('@', 1) == -1 || document.FrontPage_Form1.email.value.indexOf('.',document.FrontPage_Form1.email.value.indexOf('@', 0)) == -1 || document.FrontPage_Form1.email.value.length==0)
Saludos y espero haberte ayudado.
  #3 (permalink)  
Antiguo 23/07/2008, 08:50
 
Fecha de Ingreso: diciembre-2007
Mensajes: 149
Antigüedad: 16 años, 4 meses
Puntos: 1
De acuerdo Respuesta: Problema simple

Cita:
Iniciado por neandertal Ver Mensaje
Hola, el return funciona perfectamente.
El problema es que el boton es un submit y por eso te entra en el javascript y luego envia el formulario, tendrías que cambiar:
Código:
<input type="submit" value="Enviar" id="postback" name="postback" accesskey="6" class="textoForm" onclick="validar_contacto()"/>
por esto:
Código:
<input type="button" value="Enviar" id="postback" name="postback" accesskey="6" class="textoForm" onclick="validar_contacto()"/>
A parte de esto, no detectas cuando has dejado el mail vacio, no se si es que lo quieres asi pero si quisieras controlarlo tendrias que cambiar:
Código:
if(document.FrontPage_Form1.email.value.indexOf('@', 1) == -1 || document.FrontPage_Form1.email.value.indexOf('.',document.FrontPage_Form1.email.value.indexOf('@', 0)) == -1)
y quedaria asi:
Código:
if(document.FrontPage_Form1.email.value.indexOf('@', 1) == -1 || document.FrontPage_Form1.email.value.indexOf('.',document.FrontPage_Form1.email.value.indexOf('@', 0)) == -1 || document.FrontPage_Form1.email.value.length==0)
Saludos y espero haberte ayudado.
Gracias Colega te lo gradezco mucho ;)
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 12:33.