Foros del Web » Programando para Internet » Javascript »

generar campos a partir de listas desplegables

Estas en el tema de generar campos a partir de listas desplegables en el foro de Javascript en Foros del Web. Buenas, mi consulta es la siguiente: ¿Cómo puedo generar elementos de formularios que dependan de que opción se seleccionó desde una lista desplegable? La idea ...
  #1 (permalink)  
Antiguo 29/01/2008, 07:14
Avatar de djmashe  
Fecha de Ingreso: julio-2007
Ubicación: Posadas, Misiones
Mensajes: 52
Antigüedad: 16 años, 9 meses
Puntos: 2
Exclamación generar campos a partir de listas desplegables

Buenas, mi consulta es la siguiente: ¿Cómo puedo generar elementos de formularios que dependan de que opción se seleccionó desde una lista desplegable?

La idea es esta:

Código:
<select>
<option value="1">Crear un input text</option>
<option value="2">Crear un checkbox</option>
<option value="3">Crear un input file</option>
....
</select>
Este ejemplo lo habia encontrado una vez, pero no me acuerdo donde, .
La idea es que con js se creen los elementos dinamicamente.

Desde ya muchas gracias al que pueda ayudarme.

Última edición por djmashe; 29/01/2008 a las 07:56
  #2 (permalink)  
Antiguo 29/01/2008, 09:07
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Re: generar campos a partir de listas desplegables

Hola djmashe

Aquí tienes un código para crear elementos dinámicamente

Saludos,
  #3 (permalink)  
Antiguo 02/02/2008, 15:15
Avatar de djmashe  
Fecha de Ingreso: julio-2007
Ubicación: Posadas, Misiones
Mensajes: 52
Antigüedad: 16 años, 9 meses
Puntos: 2
De acuerdo Generar campos a partir de listas desplegables

Gracias JavierB, ya lo pude resolver. Este es el código por las dudas si a alguien le interesa:

Código:
<form id="form1" name="form1" method="post" action="">

<select name="item" id="item" onchange="while(document.getElementById('campo').childNodes[0]){document.getElementById('campo').removeChild(document.getElementById('campo').childNodes[0]);}if(this.value=='dni'){c=document.createElement('INPUT');c.name='dni';document.getElementById('campo').appendChild(c);}else if(this.value=='sexo'){c=document.createElement('SELECT');c.name='sexo';o1=document.createElement('OPTION');o1.value='hombre';document.all?o1.label='hombre':o1.text='hombre';o2=document.createElement('OPTION');o2.value='mujer';document.all?o2.label='mujer':o2.text='mujer';c.appendChild(o1);c.appendChild(o2);document.getElementById('campo').appendChild(c);}">

<option value="" selected="selected">seleccionar</option>
<option value="dni">dni</option>
<option value="sexo">sexo</option>

</select>

<span id="campo"></span>
</form>
  #4 (permalink)  
Antiguo 02/02/2008, 17:00
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: generar campos a partir de listas desplegables

¡Hola!

¡Qué embrollo de código...!

Hay algunas cosas mejorables... por ejemplo:

en vez de
Código:
while(document.getElementById('campo').childNodes[0])	{
	document.getElementById('campo').removeChild(document.getElementById('campo').childNodes[0]);
}
poner
Código:
yo = document.getElementById('campo');
while(yo.hasChildNodes())
	yo.removeChild(yo.firstChild)
Pero sobre todo te recomiendo que pongas el código más legible... ganas tiempo luego, cuando te toque hacer algunos retoques.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 04/02/2008, 06:51
Avatar de djmashe  
Fecha de Ingreso: julio-2007
Ubicación: Posadas, Misiones
Mensajes: 52
Antigüedad: 16 años, 9 meses
Puntos: 2
Re: generar campos a partir de listas desplegables

caricatos, agradesco tu comentario, pero creo que c/u programa como quiere y estructura su codigo como le guste.

Aca lo que se necesitaba era una respuesta a la consulta, no una crítica de como organice mi código.

gracias.
  #6 (permalink)  
Antiguo 04/02/2008, 08:28
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: generar campos a partir de listas desplegables

Cita:
Iniciado por djmashe Ver Mensaje
caricatos, agradesco tu comentario, pero creo que c/u programa como quiere y estructura su codigo como le guste.

Aca lo que se necesitaba era una respuesta a la consulta, no una crítica de como organice mi código.

gracias.
¡No, no, no!

Este es un foro, y si quieres que te hagan las cosas por tí, deberías pagar por ello.

Y la crítica es simplemente para que encuentres a alguien que te ayude con más facilidad.

Tu programa como tu quieras, pero si necesitas ayuda, lo mejor es que le facilites las cosas a quien tenga intención de ayudarte... Yo he contestado con intención de ayudarte, y con esa misma intención te hice lo que consideras "crítica"... puede que trate de ayudarte si consideras lo que puse... tu eres dueño de tus actos, así que depende de tí.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #7 (permalink)  
Antiguo 04/02/2008, 13:29
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
Re: generar campos a partir de listas desplegables

Cita:
Iniciado por djmashe Ver Mensaje
caricatos, agradesco tu comentario, pero creo que c/u programa como quiere y estructura su codigo como le guste.

Aca lo que se necesitaba era una respuesta a la consulta, no una crítica de como organice mi código.
Achis!, que disparate!, uno como programador debe tomar en cuenta que muchas veces otro desarrollador le deberá meter mano a nuestra códigos y debe uno tratar de hacerlos legibles, o incluso, tras unos meses es seguro que hasta a uno mismo le costara trabajo entender códigos rebuscados que unos mismo hizo.

Dios ampare al programador que alguna vez tenga que meterle mano a ese código.

pero en fin, como dice el dicho: Cada uno puede hacer de su capa un sayo.
  #8 (permalink)  
Antiguo 26/04/2008, 10:48
Avatar de djmashe  
Fecha de Ingreso: julio-2007
Ubicación: Posadas, Misiones
Mensajes: 52
Antigüedad: 16 años, 9 meses
Puntos: 2
Re: generar campos a partir de listas desplegables

Primero: a nadie le obligue a que me responda. El que tiene ganas (despues de ver un post) de comentar, lo hace; el que no sigue de largo.

Segundo: si ya habia colocado la solución, en todo caso al que no le gusto como lo estructure, simplemente lo huviese 'acomodado' como lo queria y listo en vez de estar cuestionando como los demas realizan sus scripts. Si a mi criterio yo lo entendia, c/u de uds. lo escribe como le queda mejor.

Tercero: para finalizar este post, aca les dejo 'a los mas tiernos' el mismo script pero 'un poco mas prolijo':


Código HTML:
<form id="form1" name="form1" method="post" action="#">

<select name="item" id="item" onchange="

opc = document.getElementById('campo');

while(opc.childNodes[0]) { opc.removeChild(opc.childNodes[0]); }
                   
if (this.value == 'dni') 
{
  c = document.createElement('INPUT');
  c.name='dni';
  opc.appendChild(c);
}
else if (this.value == 'sexo')
{
 c = document.createElement('SELECT');
 c.name = 'sexo';
 o1 = document.createElement('OPTION');
 o1.value = 'hombre';
 document.all ? (o1.label = 'hombre') : (o1.text = 'hombre');
 o2 = document.createElement('OPTION');
 o2.value = 'mujer';
 document.all ? (o2.label='mujer') : (o2.text='mujer');
 c.appendChild(o1);
 c.appendChild(o2);
 opc.appendChild(c);
}
">

<option value="" selected="selected">seleccionar</option>
<option value="dni">dni</option>
<option value="sexo">sexo</option>

</select>

<span id="campo"></span>
</form> 
Para finalizar, el que quiera contestar otra vez cuestionandome, evidentemente tiene tiempo para perder, en vez de hacer algo mas productivo.

Como uno de uds. comento, esto es un foro para ayudarnos no para estar armando polémicas de como hacemos las cosas.

Saludos.

PD: Para mi tema cerrado
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 22:13.