Foros del Web » Programando para Internet » Javascript »

Como mostrar una cantidad de textbox según seleccion

Estas en el tema de Como mostrar una cantidad de textbox según seleccion en el foro de Javascript en Foros del Web. Hola Quisiera saber si me pueden ayudar con una función que logre lo siguiente. Necesito mostrar entre 1 a 10 Textbox seleccionando en un Select ...
  #1 (permalink)  
Antiguo 07/01/2014, 07:20
 
Fecha de Ingreso: febrero-2011
Mensajes: 4
Antigüedad: 13 años, 2 meses
Puntos: 0
Como mostrar una cantidad de textbox según seleccion

Hola

Quisiera saber si me pueden ayudar con una función que logre lo siguiente.

Necesito mostrar entre 1 a 10 Textbox seleccionando en un Select que valor entre 1 a 10.

Solo quiero que el usuario vea el valor seleccionado, es decir si quiere 3 textbox, que solo le aparescan esos 3 y no los 10 creados.

¿Como podria lograr esto con javascript, jquery o ajax?

De ante mano muchas gracias
  #2 (permalink)  
Antiguo 09/01/2014, 17:52
 
Fecha de Ingreso: marzo-2013
Ubicación: España
Mensajes: 42
Antigüedad: 11 años, 1 mes
Puntos: 4
Respuesta: Como mostrar una cantidad de textbox según seleccion

Si el usuario quiere 3 texboxes los creas con JavaScript
  #3 (permalink)  
Antiguo 09/01/2014, 19:42
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
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
  #4 (permalink)  
Antiguo 10/01/2014, 14:45
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 7 meses
Puntos: 578
Respuesta: Como mostrar una cantidad de textbox según seleccion

Sólo un pequeño error:

Cita:
if (almacen.hasChildNodes)
Esta sentencia será siempre cierta hasta dar error, porque lo que estás comprobando no es que tenga hijos nodos, sino que esa función (hasChildNodes) exista en el elemento "almacén". Por lo tanto usa paréntesis y devolverá el valor true/false que es lo que buscamos.
  #5 (permalink)  
Antiguo 10/01/2014, 15:18
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Como mostrar una cantidad de textbox según seleccion

Se me pasó ese detalle.

Corrigiendo:
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);

Gracias por la observación.
__________________
«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

Etiquetas: ajax, cantidad, jquery, según, seleccion, textbox, valor
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:03.