Ver Mensaje Individual
  #3 (permalink)  
Antiguo 09/01/2014, 19:42
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Como mostrar una cantidad de textbox según seleccion

Para crear elementos de manera dinámica, tienes que usar el método createElement, pero como deseas ir variando la cantidad de elementos a crear, vas borrando los que hayan con el método removeChild.

Un pequeño ejemplo:

Código HTML:
Ver original
  1. <select id = "combo">
  2.     <option value = 0>ELIJE UN VALOR</option>
  3.     <option value = 1>UNO</option>
  4.     <option value = 2>DOS</option>
  5.     <option value = 3>TRES</option>
  6.     <option value = 4>CUATRO</option>
  7.     <option value = 5>CINCO</option>
  8.     <option value = 6>SEIS</option>
  9.     <option value = 7>SIETE</option>
  10.     <option value = 8>OCHO</option>
  11.     <option value = 9>NUEVE</option>
  12.     <option value = 10>DIEZ</option>
  13. <section id = "almacen"></section>

Código Javascript:
Ver original
  1. var combo = document.getElementById("combo"),
  2.     almacen = document.getElementById("almacen");
  3.  
  4. combo.addEventListener("change", function(){
  5.   var valor = this.value,
  6.       cajas = almacen.getElementsByTagName("input"),
  7.       totalCajas = cajas.length;
  8.  
  9.   if (almacen.hasChildNodes)
  10.     while (almacen.childNodes.length)
  11.       almacen.removeChild(almacen.firstChild);
  12.  
  13.   for (i = 0; i < valor; i++){
  14.     var caja = document.createElement("input");
  15.     caja.type = "text";
  16.     caja.style.display = "block";
  17.     almacen.appendChild(caja);
  18.   }
  19. }, false);

Al combo del documento, le asigno el evento change, para que cuando se elija una opción, se realice un conjunto de instrucciones, aglomeradas en una función. En dicha función, tomo el valor seleccionado en el combo, la cantidad de cajas que existan en la sección almacen y el total de cajas existentes. Con el método hasChildNodes, verifico que la sección almacen contenga elementos, de ser así, me apoyo en un bucle para ir eliminándolos uno a uno. Los elementos se eliminan desde el primero hasta el último, por lo que en cada iteración, iré eliminando siempre el primer elemento ya que al eliminar uno, el segundo pasará a ser el primero y así sucesivamente. Para tomar al primer elemento, utilizo el método firstChild. Esta acción se repetirá mientras la cantidad de elementos contenidos en la sección sea mayor a cero.

Luego, con ayuda de otro bucle, voy creando la cantidad de cajas especificadas por el usuario al elegir una de las opciones del combo y las voy adhiriendo una a una a la sección almacen con ayuda del método appendChild.

Así es como quedaría: http://jsbin.com/aPatiDOS/1

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand