PDA

View Full Version : [javascript]lanciare evento on click di input file


MEMon
21-11-2007, 17:11
Ho un input di tipo file, ne vorrei lanciare la funzione che utilizza per aprire il file-browser(qyello per scegliere il file da uploadare).
Ho pensato di lanciare il suo evento onclick, e su IE 7 funzia bene ma con firefox no...

C'è modo di lanciarlo?

MEMon
21-11-2007, 19:26
nulla? :cry:

MEMon
21-11-2007, 20:31
In alternativa come posso fare?
Il sito www.flickr.com(per la gestione delle foto) permette di uppare le proprie foto nel sito, e oltre al fatto che viene aperto il file-browser da un semplice link(non vi è traccia di input type=file) permette anche l'upload multiplo...cosa impossibile visto che non è permesso impostare programmaticamente il valore dei campi di input file.

Come si spiega questa cosa?

MEMon
21-11-2007, 21:27
Ok ho letto in giro che flickr utilizza flash per fare l'upload, ora mi chiedo, cosa usa esattamente di flash visto che non c'è nessun "filmato" swf?

kk3z
22-11-2007, 08:46
Mostra il codice di come simuli l'evento onclick...

MEMon
22-11-2007, 11:41
uploader.click();

dove uploader è l'oggetto input di tipo file

kk3z
22-11-2007, 14:58
Questo è come io simulo l'evento onclick su un link:
if (document.all)
link.fireEvent("onclick");
else
{
var evt = document.createEvent('MouseEvents');
evt.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
link.dispatchEvent(evt);
}

MEMon
22-11-2007, 16:53
Si ma a me non serve simulare quello di un link, ma quello di un input di tipo file..altrimenti non starei qui a domandare.

kk3z
23-11-2007, 09:23
ossignur. Sostituisci il link con l'input e prova! Va meglio se lo scrivo così?
var file_input = document.getElementById("file");
if (document.all)
file_input.fireEvent("onclick");
else
{
var evt = document.createEvent('MouseEvents');
evt.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
file_input.dispatchEvent(evt);
}

MEMon
23-11-2007, 11:50
Il problema non era nel come simulare un click :D quello lo sapevo fare... e avevo già fatto le mie prove.
Il problema è che con firefox sull'input file non si riesce a fare!
Bisogna intraprendere un'altra strada...