Tengo el siguiente script para la generacion dinamica de controles tipo File para upload multiple. Pero tengo un problema. En IE
me reconoce muy bien los eventos javascript y me ejecuta el codigo como deseo
. puedo añadir y quitar tantos elementos File como desee. Pero mi problema esta al hacerlo funcionar en Firefox
, no me reconoce el evento de eliminar File, en cambio añadir si me funciona
. Necesito ayuda urgente!!!!
Gracias!!!!
Código HTML:
<script language="javascript">
var upload_number; //Esta es una variable de control para mantener nombres diferentes de cada campo creado dinamicamente.
//Aqui se hace lamagia... jejeje, esta funcion crea dinamicamente los nuevos campos file
addCampo = function () {
upload_number = document.form1.upload_number.value;
if (upload_number == (-1))
{
upload_number=2;
}
//Creamos un nuevo div para que contenga el nuevo campo
nDiv = document.createElement('div');
//con esto se establece la clase de la div
nDiv.className = 'archivo';
//este es el id de la div, aqui la utilidad de la variable numero
//nos permite darle un id unico
nDiv.id = 'file' + upload_number;
//creamos el input para el formulario:
nCampo = document.createElement('input');
//le damos un nombre, es importante que lo nombren como vector, pues todos los campos
//compartiran el nombre en un arreglo, asi es mas facil procesar posteriormente con php
nCampo.name = 'archivo'+upload_number;
//Establecemos el tipo de campo
nCampo.type = 'file';
nCampo.size = '85';
nCampo.title = 'archivo'+upload_number;
//Ahora creamos un link para poder eliminar un campo que ya no deseemos
a = document.createElement('a');
//El link debe tener el mismo nombre de la div padre, para efectos de localizarla y eliminarla
a.name = nDiv.id;
//Este link no debe ir a ningun lado
a.href = '#';
//Establecemos que dispare esta funcion en click
a.onclick = elimCamp;
//Con esto ponemos el texto del link
a.innerHTML = '<font face="Verdana" size="-1" color="#003883">Delete</font>';
//Bien es el momento de integrar lo que hemos creado al documento,
//primero usamos la función appendChild para adicionar el campo file nuevo
nDiv.appendChild(nCampo);
//Adicionamos el Link
nDiv.appendChild(a);
//Ahora si recuerdan, en el html hay una div cuyo id es 'adjuntos', bien
//con esta función obtenemos una referencia a ella para usar de nuevo appendChild
//y adicionar la div que hemos creado, la cual contiene el campo file con su link de eliminación:
container = document.getElementById('adjuntos');
container.appendChild(nDiv);
++upload_number;
document.form1.upload_number.value=upload_number;
}
//con esta función eliminamos el campo cuyo link de eliminación sea presionado
elimCamp = function (evt){
evt = evento(evt);
nCampo = rObj(evt);
alert(evt.target);
div = document.getElementById(nCampo.name);
div.parentNode.removeChild(div);
upload_number=upload_number-1;
document.form1.upload_number.value=(document.form1.upload_number.value-1);
}
evento = function (evt) { //esta funcion nos devuelve el tipo de evento disparado
return (!evt) ? event : evt;
}
//con esta función recuperamos una instancia del objeto que disparo el evento
rObj = function (evt) {
return evt.srcElement ? evt.srcElement : evt.target;
}
function setBlock()
{
document.getElementById('moreLink').style.display = 'block';
}
</script>