Foros del Web » Programando para Internet » Javascript »

Error validacion formulario

Estas en el tema de Error validacion formulario en el foro de Javascript en Foros del Web. Estoy intentando validar un formulario. He hecho cientos de formularios, pero nunca me había aparecido un error como éste. Explorer y Mozilla vienen a decirme ...
  #1 (permalink)  
Antiguo 28/01/2008, 10:56
 
Fecha de Ingreso: enero-2008
Mensajes: 1
Antigüedad: 16 años, 3 meses
Puntos: 0
Error validacion formulario

Estoy intentando validar un formulario. He hecho cientos de formularios, pero nunca me había aparecido un error como éste. Explorer y Mozilla vienen a decirme lo mismo, que document.formulario.not_dest_1 es nulo o no es un objeto. No entiendo donde está el error. Os muestro los códigos. El HTML tiene un trocito de ASP, pero no es relevante.

Código HTML:
<body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0">
		<table border="0" width="100%" cellspacing="0" cellpadding="0" id="table1" align="center">
			<tr>
				<td>
					<hr noshade color="#666666">
				</td>
			</tr>
			<tr>
				<td>
					<a href="edit_index.asp"><img border="0" src="/edit/imagenes/mancheta_2.gif" width="275" height="38"></a>
				</td>
			</tr>
			<tr>
				<td>
					<hr noshade color="#666666">
				</td>
			</tr>
			<tr>
				<td>
					&nbsp;
				</td>
			</tr>
			<tr>
				<td>
					<form name="formulario" action="edit_portada_registrar.asp" method="post" onsubmit="return validacion();">
						<table border="0" width="800" cellpadding="0" align="center">
							<tr>
								<td colspan="2" align="right">
									<b><font face="Arial" size="2" color="#666666">
									<%
									login=Session.Contents("login_global")
									Response.Write(login)
									%> 
									</font></b>
								</td>
							</tr>
							<tr>
								<td colspan="2" align="right">
									<b><font face="Arial" size="1" color="#666666"><a href="edit_index.asp">[Inicio]</a>&nbsp;<a href="edit_log_out.asp">[Abandonar sesi&oacute;n]</a></font></b>
								</td>
							</tr>
							<tr>
								<td colspan="2"align="right">
									<hr noshade color="#666666" size="1">
								</td>
							</tr>
							<tr>
								<td colspan="2" bgcolor="#666666" align="right">
									<font face="arial" size="2" color="#ffffff"><b>Noticias&nbsp;</b></font>
								</td>
							</tr>
							<tr>
								<td colspan="2" align="right">
									<font face="arial" size="1" color="#666666">&nbsp;</font>
								</td>
							</tr>
							<tr>
								<td colspan="2" align="right">
									<font face="arial" size="2" color="#666666"><b>Noticia destacada 1:&nbsp;</b></font><input name="not_dest_1" size="10" maxlength="4" value="<%Response.Write(datos("noticia1"))%>">
								</td>
							</tr>
							<tr>
								<td colspan="2">
									<hr noshade color="#666666" size="1">
								</td>
							</tr>
							<tr>
								<td align="right">
									<font face="arial" size="2" color="#666666"><b>Noticia destacada 2:&nbsp;</b></font><input name="not_dest_2" size="10" maxlength="4" value="<%Response.Write(datos("noticia2"))%>">
								</td>
								<td align="right">
									<font face="arial" size="2" color="#666666"><b>Noticia destacada 3:&nbsp;</b></font><input name="not_dest_3" size="10" maxlength="4" value="<%Response.Write(datos("noticia3"))%>">	
								</td>
							</tr>
							<tr>
								<td align="right">
									<font face="arial" size="2" color="#666666"><b>Noticia destacada 4:&nbsp;</b></font><input name="not_dest_4" size="10" maxlength="4" value="<%Response.Write(datos("noticia4"))%>">
								</td>
								<td align="right">
									<font face="arial" size="2" color="#666666"><b>Noticia destacada 5:&nbsp;</b></font><input name="not_dest_5" size="10" maxlength="4" value="<%Response.Write(datos("noticia5"))%>">	
								</td>
							</tr>
							
							<tr>
								<td align="right">
									<font face="arial" size="2" color="#666666"><b>Noticia destacada 6:&nbsp;</b></font><input name="not_dest_6" size="10" maxlength="4" value="<%Response.Write(datos("noticia6"))%>">
								</td>
								<td align="right">
									<font face="arial" size="2" color="#666666"><b>Noticia destacada 7:&nbsp;</b></font><input name="not_dest_7" size="10" maxlength="4" value="<%Response.Write(datos("noticia7"))%>">
								</td>
							</tr>
							<tr>
								<td colspan="2" align="right">
									<font face="arial" size="1" color="#666666">&nbsp;</font>
								</td>
							</tr>
							<tr>
								<td colspan="2" bgcolor="#666666" align="right">
									<font face="arial" size="2" color="#ffffff"><b>V&iacute;deos&nbsp;</b></font>
								</td>
							</tr>
							<tr>
								<td colspan="2" align="right">
									<font face="arial" size="1" color="#666666">&nbsp;</font>
								</td>
							</tr>
							<tr>
								<td>
								</td>
								<td align="right">
									<font face="arial" size="2" color="#666666"><b>V&iacute;deo destacado 1:&nbsp;</b></font><input name="vid_dest_1" size="10" maxlength="4" value="<%Response.Write(datos("video1"))%>">
								</td>
							</tr>
							<tr>
								<td colspan="2">
									<hr noshade color="#666666" size="1">
								</td>
							</tr>
							<tr>
								<td colspan="2" align="center">
									<input type="submit" value="Enviar">&nbsp;<input type="reset" value="Limpiar formulario">
								</td>
							</tr>
						</table>
					</form>
				</td>
			</tr>
			<tr>
				<td height="19">
					<hr noshade color="#666666">
				</td>
			</tr>
		</table>
	</body> 
El código de JavaScript. Se supone que debería validar todos los campos, pero sólo muestro dos, porque el error es igual, se valide uno o todos los campos del formulario.


id_1=document.formulario.not_dest_1.value;
if(isNaN(id_1)==true)
id_1=false;

id_2=document.formulario.not_dest_2.value;
if(isNaN(id_2)==true)
id_2=false;

function validacion()
{
if((id_1==false)||(id_2==false))
{
alert("Debe introducir valores numéricos.");
return false;
}
}


El navegador dice que document.formulario.not_dest_1 es nulo o no es ningun objeto.

Me estoy volviendo loco

Gracias por adelantado
  #2 (permalink)  
Antiguo 28/01/2008, 16:05
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: Error validacion formulario

Intentá con las funciones del DOM:

getElementsByName("not_dest_1")[0]

getElementsByName devuelve una matriz en donde cada entrada corresponde a un elemento con el atributo "name" puesto a "not_dest_1".

Además, asegurate de que tu código sea HTML válido. Muchos errores raros se producen cuando hay errores de sintaxis.


Saludos.
  #3 (permalink)  
Antiguo 30/01/2008, 04:15
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: Error validacion formulario

Hola:

Parece que las asignaciones de las variables están fuera de la función, sí que se hacen cuando los campos aún no están creados... verás, la idea de alvlin (¡Hola !) es buena, pero lamentablemente explorer (al menos las versiones viejas) no implementan bien el método getElementsByName()... a veces confunde name con id), además que parece que tampoco están creados esos campos...

La forma más fiable de hacer validaciones, y de fácil reutilización, es pasándole al método validador el formulario que se le aplica mediante el objeto this:
<form onsubmit="return validacion(this)"...

Y para tu caso se procesaría:

function validacion(f) {
valida = ((!isNaN(f.not_dest_1.value)) || (!isNaN(f.not_dest_2.value))
if (!valida)
alert("Debe introducir valores numéricos.");
return valida;
}

No lo he probado, pero lo que creo que importa más es lo teórico...

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 21:32.