Foros del Web » Programando para Internet » Javascript »

Agregar elementos de formulario con una variable

Estas en el tema de Agregar elementos de formulario con una variable en el foro de Javascript en Foros del Web. Soy novato en Javascript tiene menos de un mes que lo estoy usando, todo bien hasta que tengo un problema al tomar el valor de ...
  #1 (permalink)  
Antiguo 24/07/2009, 14:29
Avatar de chroman81  
Fecha de Ingreso: abril-2009
Mensajes: 25
Antigüedad: 15 años
Puntos: 0
Agregar elementos de formulario con una variable

Soy novato en Javascript tiene menos de un mes que lo estoy usando, todo bien hasta que tengo un problema al tomar el valor de una variable y según el valor me agregue elementos "input" en un formulario.

intente con esta función espero y me puedan ayudar:

Código:
function rellena()
{
var x = parseInt(document.datos.numeros.value)
for (i=0; i<x; i++)
		{
		document.write('<input type="text" size ="2" value="">')
		}
}
La función me agrega los elementos "input" según el valor que contenga X, pero me aparecen en un documento en blanco, no se la manera correcta de realizar esto dinamico es decir sin que me borre todo del html.....

Bueno tuve esta experiencia con javascript por ejemplo cuando tenia que enviar valores a una etiqueta DIV use:

document.getElementById("DIV1").innerHTML = x;

Pero con formularios dinamicos a la hora de agregarlos no se que sentencia usar.

Espero y me puedan orientar un poco... SALU2
  #2 (permalink)  
Antiguo 24/07/2009, 14:33
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 1 mes
Puntos: 47
Respuesta: Agregar elementos de formulario con una variable

Proba asi

function rellena()
{
var x = parseInt(document.datos.numeros.value)
for (i=0; i<x; i++)
{
var nuevoInput = document.createElement('input');
nuevoInput.type = 'text';
nuevoInput.appendChild(document.datos);
}
}

Por ahi debe andar la solucion no lo probe en un naevgador si no lo solucionas avisa

Saludos
  #3 (permalink)  
Antiguo 24/07/2009, 14:36
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Agregar elementos de formulario con una variable

Hola

Has de usar document.createElement("input");

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #4 (permalink)  
Antiguo 24/07/2009, 16:31
Avatar de chroman81  
Fecha de Ingreso: abril-2009
Mensajes: 25
Antigüedad: 15 años
Puntos: 0
Respuesta: Agregar elementos de formulario con una variable

Gracias ya me ha funcionado, pero le tuve que hacer modificaciones por que al dar llamar a la función me borraba el campo donde metía la variable x. me ha quedado asi:

function rellena()
{
var x = parseInt(document.datos.numeros.value)
var form = document.getElementById("formulario");
for (i = 0; i < x; i++) {
var nuevoInput = document.createElement('input');
nuevoInput.type = 'text';
nuevoInput.name = 'arre'+i;
nuevoInput.size = '2';
form.appendChild(nuevoInput);
}
}

Ahora como puedo agregar un Espacio o caracter después de cada elemento creado????

GRACIAAS!

Última edición por chroman81; 24/07/2009 a las 16:56
  #5 (permalink)  
Antiguo 24/07/2009, 17:39
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 1 mes
Puntos: 47
Respuesta: Agregar elementos de formulario con una variable

mmm si lo que te referis es a llenar los campos seria nuevoInput.value = 'nombre del usuario';
es eso lo que queres hacer?
  #6 (permalink)  
Antiguo 25/07/2009, 06:01
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Agregar elementos de formulario con una variable

Hola

Prueba así

Código javascript:
Ver original
  1. for (i = 0; i < x; i++) {
  2. var txr = document.createTextNode("Campo Dinamico "+ i + " ")
  3. form.appendChild(txt);
  4. var nuevoInput = document.createElement('input');

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #7 (permalink)  
Antiguo 25/07/2009, 14:06
Avatar de chroman81  
Fecha de Ingreso: abril-2009
Mensajes: 25
Antigüedad: 15 años
Puntos: 0
Respuesta: Agregar elementos de formulario con una variable

Gracias Adler el codigo enseguida lo pruebo y comento ahora tengo una duda como elmino lo ya creado???? pense en el mismo script para insertar, pero con algunos cambios.

Código javascript:
Ver original
  1. function doLimpiatodo()
  2. {
  3.     var x = parseInt(document.datos.numeros.value)
  4.     var form = document.getElementById("formulario");
  5.    
  6.     for (i = 0; i < x; i++) {
  7.         var borrainput = getElementsByTagName('input');
  8.         borrainput.type = 'text';
  9.         borrainput.name = 'arre' + i;
  10.         borrainput.size = '2';
  11.         borrainput.class = "input";
  12.         form.removeChild(borrainput);
  13.     }
  14. }

pero no me borra no se que estoy haciendo mal, o si es la manera correcta de eliminar elementos que he creado a partir de un valor X.

salu2 y gracias a todos.
  #8 (permalink)  
Antiguo 25/07/2009, 19:18
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 1 mes
Puntos: 47
Respuesta: Agregar elementos de formulario con una variable

Si queres borrar los campos creo que simplemente deberias dejarlo asi

Código javascript:
Ver original
  1. 1.
  2.       function doLimpiatodo()
  3.       {
  4.          var x = parseInt(document.datos.numeros.value)
  5.           var form = document.getElementById("formulario");
  6.           var borrainput = getElementsByTagName('input');
  7.           for (i = 0; i < x; i++) {
  8.               form.removeChild(borrainput[i]);
  9.           }
  10.       }

Saludos
  #9 (permalink)  
Antiguo 26/07/2009, 16:43
Avatar de chroman81  
Fecha de Ingreso: abril-2009
Mensajes: 25
Antigüedad: 15 años
Puntos: 0
Respuesta: Agregar elementos de formulario con una variable

Gracias estrictamente como lo has puesto no me ha funcionado, puesto que no se muy bien como funciona realmente la función que has puesto hice modificaciones y pruebas y he logrado lo que queria borrar todos los elementos que había creado.

Código javascript:
Ver original
  1. function doLimpiatodo()
  2. {
  3.     var x = parseInt(document.datos.numeros.value);
  4.     var form3 = document.getElementById('formulario');
  5.     var borrainput = form3.getElementsByTagName('input');
  6.     for (i = 0; i < x; i++)
  7.     {
  8.         form3.removeChild(borrainput[0]);
  9.         }
  10. }

solamente me borraba cuando .removeChild(borrainput[j]); fuese [0], no entendi por que :S

salu2 pero de todos modos ya ha quedado muchísimas gracias!!!!
  #10 (permalink)  
Antiguo 26/07/2009, 21:16
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Agregar elementos de formulario con una variable

el codigo que tienes no te funciona porque: (1) estas buscando todos los elementos inputs dentro del formulario cuando solo quieres aquellos creados dinamicamente, y (2)
Cita:
solamente me borraba cuando .removeChild(borrainput[j]); fuese [0], no entendi por que
sucede que getElementsByTagName devuelve una coleccion de elementos. cuando uno de esos elementos se remueve del documento (.removeChild) la coleccion tambien se altera. o sea, llega un punto en que la variable que sirve como iterador (en tu caso la j), no representa un elemento de la coleccion.

a continuacion un ejemplo donde en lugar de utilizar una coleccion de elementos, utiliza un elemento en particular (<div id="dynamic">) donde se van agregando los elementos creados.
Código:
<script type="text/javascript">
function create(quantity){
var div = document.getElementById("dynamic");
while(div.firstChild)div.removeChild(div.firstChild); // remover elementos;
	for(var i = 1, quantity = Number(quantity); i <= quantity; i++){
	var p = document.createElement("p");
	var input = document.createElement("input");
	var text = document.createTextNode("Campo " + i + ": ");
	input.setAttribute("name", "arre" + i);
	input.setAttribute("size", "2");
	input.className = "input";
	p.appendChild(text);
	p.appendChild(input);
	div.appendChild(p);
	}
}
</script>
<form name="datos">
<p>Cantidad de campos: <input type="text" name="quantity" /> <input type="button" value="Crear" onclick="create(this.form.quantity.value)" /></p>
<div id="dynamic"></div></form>
que quede claro. no digo que esta mal utilizar la coleccion de elementos, sigue siendo una alternativa valida. simplemente queria desviarte por otra alternativa para que no tuvieras mayores problema.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 26/07/2009 a las 21:28
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 02:18.