Foros del Web » Programando para Internet » Javascript »

Pasar un arreglo desde un form

Estas en el tema de Pasar un arreglo desde un form en el foro de Javascript en Foros del Web. Agradeceria si me pudiesen indicar como paso desde un FORM HTML un arreglo y como la funcion Javascript que debera hacer un chequeo del Form ...
  #1 (permalink)  
Antiguo 14/11/2005, 04:41
 
Fecha de Ingreso: diciembre-2004
Mensajes: 25
Antigüedad: 19 años, 4 meses
Puntos: 0
Pasar un arreglo desde un form

Agradeceria si me pudiesen indicar como paso desde un FORM HTML un arreglo y como la funcion Javascript que debera hacer un chequeo del Form debe recibir este arreglo y trabajarlo.
  #2 (permalink)  
Antiguo 14/11/2005, 06:27
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola:

Si ese arreglo es una variable definida con javascript, por la forma de manejo de arrays javascript se pasarían como un solo elemento separado por comas...

por ejemplo:
var miArreglo = [1, 2, 3];

al pasar eso a un elemento de formulario se convierte en 1,2,3 y sencillamente separas los elementos con el método split de las cadenas...

"1,2,3".split(",") es igual a ["1","2","3"]... en este caso abriar que parsear las cadenas (parseInt)

Pero si ese arreglo es un elemento de formulario como un select multiple o un checkbox... la linea URL se queda con copias de las variables.
destino.html?check=1&check=2

Entonces se complica el tema.

Normalmente recojo los parámetros con un bucle así:
for (var i = 0, elementos = location.search.substr(1).split("&"), total = elementos.length; i < total; i ++)
window[elemento[i].split("=")[0]] = elemento[i].split("=")[1];

Pero se puede modificar el script para saber si está definida la variable, y sino definirla como array, y por último ir añadiendo los items...

Código:
<html>
<head>
<script>
function recibir()	{
	datos = location.search.substr(1).split("&"), total = datos.length;
	for (var i = 0; i < total; i ++)	{
		if (window[datos[i].split("=")[0]] == undefined)
			window[datos[i].split("=")[0]] = new Array();
		window[datos[i].split("=")[0]][window[datos[i].split("=")[0]].length] =
			datos[i].split("=")[1];
	}
}

</script>
</head>
<body onload="recibir()" >
</body>
</html>
Es algo complejo, pero no muy difícil... por cierto, en las FAQs se habla de recogida de parámetros (ne recuerdo si se contempla la recogida de arrays)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 14/11/2005, 09:50
Avatar de programeitor  
Fecha de Ingreso: febrero-2005
Mensajes: 994
Antigüedad: 19 años, 2 meses
Puntos: 9
.
Hola , .Los forms al enviarse mediante el 'submit' a una funcion, del modo:


<form name="datos" action="javascript:funcion(document.forms.datos)">




pasan un arreglo al modo de:

arguments['¿nº de formulario?'][nº de campo]

tenemos el 'nº de formulario' que es cero ,y el 'nº de campo' con su nombre y su valor.

entonces para referirte a ellos como a una matriz, dentro de una funcion puedes utilizar:


arguments[0][n].name
arguments[0][n].value




o traspasrla a otra matriz, solo con los valores:


for(n=0;n<arguments[0].length;n++)
{
matriz[n]=arguments[0][n].value
}



y ya está lista para utilizarla.-
.
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 10:52.