15/03/2011, 09:47
|
| | Fecha de Ingreso: marzo-2011
Mensajes: 3
Antigüedad: 13 años, 8 meses Puntos: 0 | |
Cancelar multiples input file. Ayuda por favor Muy buenas, acabo de registrarme porque por más que he buscado por internet no he conseguido dar con la razón por la que no me funciona lo que tengo hecho. No me ha quedado más remedio que molestaros un poquito, lo siento de antemano.
Bueno os expongo un poco la idea. tengo un html básico que luego adaptaré en mi código pero una vez que funcione. Ahora mismo la idea es hacer un multiple input file, es decir yo voy dando la opción de seleccionar archivos para posteriormente subirlos a un servidor, pero siempre puede existir la equivocación e intentar subir un fichero erróneo, para ello quiero dar la opción de cancelar ese input, es decir, eliminarlo directamente. El código es el siguiente, sé que está un poco lioso pero...le he dado mil vueltas por arriba y por abajo y no hay forma.
<HTML>
<BODY BGCOLOR = "#FFFFFF" TEXT = "000000" OnKeyPress="return desactivarTeclaEnter(event)">
<form action="/cgi-bin/d.html" method="post" enctype="multipart/form-data">
<script type="text/javascript">
var upload_number = 1;
function addFileInput() {
var d = document.createElement("div");
var e = document.createElement("div");
var file = document.createElement("input");
var cancel = document.createElement("input");
cancel.setAttribute("type", "button");
cancel.setAttribute("name", "cancelar"+upload_number);
cancel.setAttribute("value", "Eliminar"+upload_number);
cancel.setAttribute("size",40);
file.setAttribute("type", "file");
file.setAttribute("name", "attachment"+upload_number);
file.setAttribute("id", "attachment"+upload_number);
file.setAttribute("size",40);
var gko = navigator.userAgent.toLowerCase();
if (gko.indexOf('gecko')!=-1) //si soporta gecko, es Mozilla, Netscape, Safari, etc
cancel.setAttribute('onclick','this.parentNode.rem oveChild(this);return false');//hacemos el setAttribute normalmente
else //es I Explroer
//cancel['onclick']=new Function('this.parentNode.removeChild(this);return false;');//creamos en setAttribute de esta forma
cancel['onclick']=new Function('borrar(this);');//creamos en setAttribute de esta forma
d.appendChild(file);
e.appendChild(cancel);
document.getElementById("moreUploads").appendChild (d);
document.getElementById("cancelUploads").appendChi ld(e);
upload_number++;
}
function borrar(objeto){
var number = objeto.name;
number = number.substring(8);
var cadena = "attachment"+number;
alert(cadena);
var objeto2 = document.getElementsByTagName(cadena);
alert(objeto2.name);
moreUploads.removeChild(cadena);
// moreUploads.removeChild(objeto2);
// var salya = document.getElementbyId("attachment2");
// alert(salya.length);
//moreUploads.removeChild(moreUploads.lastChild);
objeto.parentNode.removeChild(objeto);
}
</script>
<table width = 100% border=0 align = "center">
<TR>
<TD width = 25% style="color:black;">
Adjuntar fichero:
</TD>
<TD>
<input type="file" size = 40 name="attachment" id="attachment" onchange="document.getElementById('moreUploadsLink ').style.display = 'block';" />
<TABLE>
<TR>
<TD>
<div id="moreUploads">
</div></TD>
<TD><div id="cancelUploads">
</div></TD>
</TR>
</TABLE>
<div id="moreUploadsLink" style="display:none;"><a href="javascript:addFileInput();">Añadir otro adjunto</a></div>
</TD>
</tr>
</TABLE>
</form>
</BODY>
</HTML>
Es necesario que funcione en Internet Explorer, en Firefox me da igual porque se va a utilizar únicamente con el Explorer, ahora mismo me da error en la línea 51 diciéndome "Tipo incorrecto".
var objeto2 = document.getElementsByTagName(cadena);
alert(objeto2.name); moreUploads.removeChild(cadena);
Muchas gracias por todo.
Un saludo. |