Pagina dinamica por ListBox

mako

Lanero Reconocido
2 Abr 2004
419
Hola!

Tengo una pregunta, y es que no se si será posible hacer lo que quiero hacer jaja. Estoy haciendo un formulario Web en PHP y me gustaría poner un ListBox en el que aparecieran los siguientes campos 1, 2, 3, 4, 5. Dependiendo de la opción que elija el usuario a continuación aparecerán 1 textbox, 2 textbox y asi sucesivamente. Imagino que esto debe hacerse mediante un bucle, pero no se por donde empezar.

Alguien me ayuda?
 
Jejejeje Makoto si, es una coincidencia nuestros nicks se parecen mucho!

¿Nadie sabe nada acerca de mi problema? Ayudaaa
 
Si estas trabajando con web, podes conseguir lo que necesitas con JavaScript (Creo que es la única forma (Nada de flash)). No tengo muchas ideas de JS asi que no te puedo ayudar mucho pero si te pones a investigar no creo que sea problema solucionar las dudas.
 
una forma un poco "fea" de hacer eso es:

<html>
<head>
<title>Dynamic Form</title>
<script language="javascript">
function changeIt()
{
var i = 1;
my_div.innerHTML = my_div.innerHTML +"<br><input type='text' name='mytext'+ i>"

}
</script>
</head>
<body>

<form name="form" action="post" method="">
<input type="text" name=t1>
<input type="button" value="test" onClick="changeIt()">
<div id="my_div"></div>

</body>
fuente: http://psacake.com/web/je.asp

una forma un poco mas "profesional" :p

currentElement = document.createElement("input");
currentElement.setAttribute("type", "text");
currentElement.setAttribute("name", "name");
currentElement.setAttribute("id", "name");
currentElement.setAttribute("value", "xxx");
currentCell.appendChild(currentElement);
donde debes cambiar los atributos type por el tipo que necesites (usualmente TEXT), name e id por un nombre unico para identificarlos y value por el valor inicial de dicho campo

currentCell es el elemento HTML destino que debe llevar un ID con el valor currentCell o su equivalente si lo quieres llamar de otra forma

todo el quote anterior debe ir entre las etiquetas <script></script> en el HTML o preferiblemente en un *.js aparte
 
Hola, efectivamente no es cierto que JS sea la única forma, pero si es un (tal vez el mejor) método para hacerlo. lo puedes hacer de dos formas (realmente hay mas) que son:
creo los listbox de entrada con php y los pones ocultos (style="visibilite:hidden" creo) y cuando le den a una de tus opciones lo haces visible mediante js:
function visible ( id )
{
this.getElementById ( id ).style.visibility = "visible";
} // Creo, confirma esto xD.

y listo, para que sea más dinámico carga una canidad de inputs fijos invisibles, digamos 5 y cuando el usuario pase al 6 elemento, te toca recargar toda la página, es decir, de 5 en 5 y asi solo recargas cada sexto elemento.

La otra forma es hacerlo mediante Ajax:
<div id="textos">
<input 1>
</div>
<listbox ....>
<option 1 ... onclick="aumentar()">
</listbox>

y luego la funcion
function aumentar ( id )
{
divCarga = this.getElementById ( id );
// llamadas a ajax mediante prototype (www.prototype.org)
divCarga = request.innerHTML;
}

y este fragmento en otro html que será cargado con el ajax:
<div id="textos">
<input 1>
</div>

Y listo, tienes lo que tu quieres, rápido y sin que el usuario vea afectada su funcionalidad.

Suerte
 

Los últimos mensajes

Los últimos temas