Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/04/2008, 05:39
brainstorm
 
Fecha de Ingreso: septiembre-2005
Ubicación: España
Mensajes: 78
Antigüedad: 19 años, 2 meses
Puntos: 0
Recuperar script para subir multiples archivos con un solo input del FAQ

Vuelvo a dar guerra
Vereis hace tiempo hice una pregunta que me contesto perfectamente Caricatos y se curro un pequeño script que cumplia su funcion a la perfeccion y que acabo en el indice de FAQ y propuesto a desafios JavaScript.

El Script
http://www.forosdelweb.com/2344564-post265.html

Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<
html>
<
head>
<
title>
    
http://www.caricatos.net/probador
</title>
<
script>
function 
tag(id) {return document.getElementById(id)};
var 
actual total 0;
var 
maximo 5;
function 
listar(f)    {
    if (
actual == total)    {
        
actual = ++total;
        
nuevo document.createElement("div");
        
nuevo.onclick = function() {
            
tag("file_" actual).style.display "none";
            
tag("elemento_" actual).style.backgroundColor "white";
            
actual this.id.substr(9);
            
tag("file_" actual).style.display "inline";
            
tag("elemento_" actual).style.backgroundColor "#eeeeee";
        }
        
nuevo.id "elemento_" + (actual 1);
        
tag("listado").appendChild(nuevo);
        
nuevo.appendChild(document.createTextNode(f.value));
        
nuevo.style.cursor "pointer";
        if (
total maximo)    {
            
nuevof f.cloneNode(true);
            
f.style.display "none";
            
nuevof['value'] = "";
            
nuevof.id "file_" actual;
            
f.parentNode.insertBefore(nuevoff.nextSibling);
        }
        else    {
            
tag("oculto").style.display "none";
            
actual 4;
            
tag("elemento_" actual).style.backgroundColor "#eeeeee";
        }
    }
    else    {
        
elem tag("elemento_" actual);
        
elem.replaceChild(document.createTextNode(f.value), elem.firstChild);
        
//tag("elemento_" + actual).innerHTML = f.value;
    
}
}
</script>
</head>

<body>
    <form action="javascript: alert('Ok')" >
        <input type="file" onchange="listar(this)" name="userfile[]" id="file_0" size="50" />
        <button type="submit"> enviar </button>
    </form>
    <div id="listado" style="position: relative; background-color: white">
        <div id="oculto" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: transparent">
        </div>
    </div>
</body>
</html> 
El problema viene en que el script tiene un error que muestra IE 6 y IE 7 al hacer click sobre el texto que nombra cualquier de los archivos seleccionados que aparece dentro del div, siempre y cuando no se hallan seleccionado el limite de archivos maximo. Desaparece el input de seleccion de archivos.

Error que muestra IE6 y IE7
--------------------------------------------
Linea: 17
Caracter: 4
Error: Se requiere un objeto.
--------------------------------------------

Bueno el caso me gustaria recuperar el post pues tengo mucho interes en el y ver si alguien dado que no tengo ni idea de JavaScript puede corregir el error que presenta.

... Y ya puestos a pedir si puede hacer que aparezca un texto o boton al lado de los archivos seleccionados dentro del div para quitar un archivo seleccionado seria perfecto. Vamos una copia del sistema de seleccion de archivos de GMAIL de Google.

Un saludo a todos y gracias de antemano.