Buenas noches a todos los foreros!
Recurro nuevamente a este foro, como no iba ser de otra forma, en busca de un poco de su gran conocimiento para poder ayudarme a resolver un problema que tengo con JS. El mismo es el siguiente:
Mediante JS, yo voy agregando formularios a mi pagina, para poder subir n archivos. La idea es que, cuando se agregue un archivo, se inicia el upload mediante Ajax (con el famos iframe escondido) y, mediante el evento onchage del input, se agregue un nuevo formulario para que se puedan cargar varios archivos al mismo tiempo. EL codigo es el siguiente:
Código:
var numero = 0;
c= function (tag) { // Crea un elemento
return document.createElement(tag);
}
d = function (id) { // Retorna un elemento en base al id
return document.getElementById(id);
}
e = function (evt) { // Retorna el evento
return (!evt) ? event : evt;
}
f = function (evt) { // Retorna el objeto que genera el evento
return evt.srcElement ? evt.srcElement : evt.target;
}
function cambia(id){
document.getElementById(id).innerHTML = "se esta subiendo";
}
addField = function () {
container = d('upload');
++numero;
span = c('form');
span.className = 'form';
span.id = 'file' + numero;
span.method="post";
span.enctype="multipart/form-data";
span.action="upload.php";
span.target="iframeUpload" + numero;
field = c('INPUT');
field.name = 'fotos';
field.type = 'file';
field.onchange = "javascript: submit();addField();document.getElementById('uploader"+numero+"').innerHTML='<img src=\"fotos/barra.gif\"/>';";
field.accept="image/jpg";
field.className = 'field';
field2 = c('INPUT');
field2.name = 'evento';
field2.type = 'hidden';
field2.value = document.getElementById('select').value;
field3 = c('INPUT');
field3.name = 'numero';
field3.type = 'hidden';
field3.value = numero;
iframe = c('iframe');
iframe.className = 'iframe';
iframe.id="iframeUpload" + numero;
iframe.name="iframeUpload"+numero;
subir = c('span');
subir.id= "uploader"+numero;
subir.className = 'upload';
span.appendChild(field);
span.appendChild(iframe);
span.appendChild(field2);
span.appendChild(field3);
span.appendChild(subir);
container.appendChild(span);
}
removeField = function (evt) {
lnk = f(e(evt));
span = d(lnk.name);
span.parentNode.removeChild(span);
}
ESte funciona perfecto en opera, pero en nigun otro navegador. La funcion addFile sin funciona, pero lo que no se ejecuta correctamente, es el evento onchange del formulario: digamos, yo elijo el primer archivo y la idea seria que se agregue un nuevo formulario y se comienze a subir el otro. Pero esto no sucede.
Alguna idea en qué es lo que puedo andar funcionando mal? Culquier duda, el codigo en funcionamiento se encuentra
aqui.
Muchas gracias, espero su ayuda y/o comentarios!
Pablo.