Foros del Web » Programando para Internet » Javascript »

Añadir otro adjunto

Estas en el tema de Añadir otro adjunto en el foro de Javascript en Foros del Web. Buenas, Me gustaría solicitaros ayuda con un tema. Estoy empezando a trabajar con AJAX, pero creo que la duda es exclusivamente de JavaScript. Estoy haciendo ...
  #1 (permalink)  
Antiguo 29/07/2011, 05:08
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Añadir otro adjunto

Buenas,

Me gustaría solicitaros ayuda con un tema. Estoy empezando a trabajar con AJAX, pero creo que la duda es exclusivamente de JavaScript.

Estoy haciendo un formulario al que se pueden adjuntar ficheros para subirlos y quería añadir el típico enlace de "Añadir otro adjunto". Tengo el siguiente HTML:
Código HTML:
<div id="clone-input"><input type="file" name="attachment[]"/></div><a href="javascript:cloneInput()">Adjuntar otro</a> 
Y el JS:
Código:
function cloneInput(){
	var new_input = '<input type="file" name="attachment[]"/>';
	var parent = document.getElementById('clone-input');
	var complete = '';
	for (var i = 0; i < parent.childNodes.length; i++) {
		complete += '<input type="file" name="attachment[]" value="' + parent.childNodes[i].value + '"/>';
	}
	complete += new_input;
	alert(complete);
	parent.innerHTML = complete;
}
El nuevo input lo crea perfectamente, pero los inputs que hubiera antes pierden el fichero si ya lo insertaste. Es decir, si añades un fichero en el input y le das a añadir otro, este se añade sin problemas, pero el input que ya habías rellenado se vacía.

Hice el código que veis ahí para intentar solucionarlo, pero parent.childNodes[i].value sólo tiene el nombre del fichero y la ruta se pierde, creo que por eso se pierde el value.

Espero que me puedan echar una mano, un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #2 (permalink)  
Antiguo 29/07/2011, 05:16
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Añadir otro adjunto

Hola:

Yo suelo clonar un tag oculto
<div id="oculto">
<input type="file" name="ficheros[]" />
</div>

...

elinput = document.getElementById("oculto").getElementsByTag Name("input")[0].cloneNode(true);

... y luego se añade al formulario ...

document.forms.el_form.appendChild(elinput);

Solo queda la parte estética...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 29/07/2011, 05:50
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Añadir otro adjunto

Buenas,

No sé si no te he entendido a ti o tú a mí. No tengo problema al añadir el input nuevo, eso lo tengo solventado, mi problema es que al ejecutar la función los inputs (que ya había antes de añadir el nuevo) pierden lo que tuvieran puesto.

Si me entendiste bien, entonces no te entendí yo.

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #4 (permalink)  
Antiguo 29/07/2011, 06:09
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Añadir otro adjunto

Hola:

Creo que te entendí perfectamente, pero si tienes problemas, será porque no lo estarás haciendo bien (evidentemente), y lo que yo planteo es otra forma de hacer lo que te da problemas, y tengo comprobado que mi método funciona correctamente: Caricaturas de grupos a color en acuarelas

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 29/07/2011, 06:44
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
De acuerdo Respuesta: Añadir otro adjunto

Listo, lo he hecho como me ponías en tu post y me funciona perfecto. Dejo por aquí la solución por si alguien puede sacarle provecho:
HTML:
Código HTML:
<div id="clone-base" style="display: none;"><input type="file" name="attachment[]"/></div>
<div id="clone-parent"><input type="file" name="attachment[]"/></div>
<a href="javascript:cloneInput()">Adjuntar otro</a> 
JS:
Código:
function cloneInput(){
	var parent = document.getElementById('clone-parent');
	var base = document.getElementById('clone-base');
	var new_input = base.childNodes[0].cloneNode(true);
	parent.appendChild(new_input);
}
Muchas gracias por la ayuda y un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?

Etiquetas: adjuntar, attachment
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 16:30.