Versión Completa : Pagina dinamica por ListBox
mako
enero 21, 2007, 10:44
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?
Makoto Miura
enero 21, 2007, 11:15
Jejejejeje, q pena men, la verdad no sé nada de eso solo me causó curiosidad tu nick.
Sayo.
mako
enero 23, 2007, 08:53
Jejejeje Makoto si, es una coincidencia nuestros nicks se parecen mucho!
¿Nadie sabe nada acerca de mi problema? Ayudaaa
NSlaver
enero 23, 2007, 09:04
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.
arthvrian
enero 23, 2007, 09:56
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
hell await
enero 24, 2007, 01:02
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
mako
enero 26, 2007, 03:16
Muchas gracias, esta tardé probaré y os comento
vBulletin®, Copyright ©2000-2009, Jelsoft Enterprises Ltd.