Foros del Web » Programando para Internet » Javascript »

Problema con formulario dinámico

Estas en el tema de Problema con formulario dinámico en el foro de Javascript en Foros del Web. Hola, necesito alguna luz que me ilumine porque ya tengo casi todas mis luces fundidas... . Tengo el código pero me falta escribirlo correctamente. Os ...
  #1 (permalink)  
Antiguo 07/01/2006, 03:55
msi
 
Fecha de Ingreso: marzo-2005
Mensajes: 70
Antigüedad: 19 años, 2 meses
Puntos: 0
Problema con formulario dinámico

Hola, necesito alguna luz que me ilumine porque ya tengo casi todas mis luces fundidas... . Tengo el código pero me falta escribirlo correctamente. Os cuento:

En un formulario normal declarado como 'ejercicioForm' tengo un campo select:
Código HTML:
Contenido : <select name="contenido" size="1"></select>
<tr>
<td><input type="radio" name="tipocontenido" value="conindata" onclick="changeContenidosEjercicio(this.value);">Conducta Individual Ataque</td>
<td><input type="radio" name="tipocontenido" value="gesindata" onclick="changeContenidosEjercicio(this.value);">Gesto Individual Ataque</td>
</tr> 
Así, en la función javascript puedo cambiar los valores del campo select según se pulse una opción del campo radio:

Código:
function changeContenidosEjercicio(control){

	contenidosArray = new Array();
	//Si no creo mal, en contenido se cargarán los valores, pero se supone que debería estar
	//al final, pero así no funciona. Si es que esto de javascript...
	
        contenidosEjercicio = document.forms['ejercicioForm'].contenido;	 
	
	
	contenidosEjercicio.options.length=0;
	
	if (control == 'conindata') {contenidosArray = Arrayconindata;}
	if (control == 'gesindata') {contenidosArray = Arraygesindata;}
	
	
	for (i=0; i < contenidosArray.length;i++)
		contenidosEjercicio.options[i] = contenidosArray[i];
}
Este código funciona bien, pero ahora necesito lo mismo pero con un formulario dinámico donde puede haber varios de estos campos select. El control del formulario dinámico lo hago bien, un ejemplo es:
Código HTML:
Contenido : <select name="controles[0].contenido" size="1"></select>
<tr>
	<td> <input type="radio" name="controles[0].tipocontenido" value="conindata" checked="checked" onclick="changeContenidosControl(this.value,0);">Conducta Individual Ataque</td>
<td><input type="radio" name="controles[0].tipocontenido" value="gesindata" onclick="changeContenidosControl(this.value,0);">Gesto Individual Ataque</td>
</tr> 
Código HTML:
Contenido : <select name="controles[1].contenido" size="1"></select>
<tr>
	<td> <input type="radio" name="controles[1].tipocontenido" value="conindata" checked="checked" onclick="changeContenidosControl(this.value,1);">Conducta Individual Ataque</td>
<td><input type="radio" name="controles[1].tipocontenido" value="gesindata" onclick="changeContenidosControl(this.value,1);">Gesto Individual Ataque</td>
</tr> 

Mi problema es que no consigo declarar bien esta línea:

contenidosControl = document.forms['controldinamicoForm'].contenido;

¿Cómo sería? He probado muchas combinaciones pero consigo hallar la correcta. Paso el índice a mi nueva función pero no se si tengo que poner "controles" , donde ponerlo, combinarlo con [indice], etc...

¿Alguna idea?
  #2 (permalink)  
Antiguo 08/01/2006, 10:25
msi
 
Fecha de Ingreso: marzo-2005
Mensajes: 70
Antigüedad: 19 años, 2 meses
Puntos: 0
Por fin encontré la manera de declararlo:

contenidosControl = document.forms['controldinamicoForm'].elements["controles["+ id +"].contenido"];

pero ahora me encuentro con otro problema. Si por ejemplo tengo 2 controles, debo mostrar 2 contenidos. Si pulso sobre el radio2 del 1º control se cargan los valores bien pero si pulso sobre el radio2 del 2º control me dice este error:

"El objeto no acepta esta propiedad o método"


La línea conflictiva es esta:

for (i=0; i < contenidosArray.length;i++)
contenidosControl.options[i] = contenidosArray[i];

Es decir, no puede estar checked el mismo radio button para varios controles mostrados.

Un saludo.
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 17:39.