Sto provando ad abbracciare jQuery al 100% con la sua semplice ed elegante API ma ho incontrato un'incoerenza tra l'API e l'HTML lineare che non riesco risolvere.jQuery change method on input type = "file"
Ho uno script di caricamento file AJAX (che funziona correttamente) che voglio eseguire ogni volta che cambia il valore di input del file. Ecco il mio codice di lavoro:
<input type="file" size="45" name="imageFile" id="imageFile" onchange="uploadFile()">
Quando converto l'evento onchange
ad un'implementazione jQuery:
$('#imageFile').change(function(){ uploadFile(); });
il risultato non è lo stesso. Con l'attributo onchange
la funzione uploadFile()
viene richiamata ogni volta che il valore viene modificato come previsto. Ma con il gestore di eventi jQuery API .change()
, l'evento scatta solo la prima volta che un valore cambia. Qualsiasi variazione di valore dopo viene ignorata. Questo mi sembra sbagliato ma sicuramente non può essere una svista da parte di jQuery, giusto?
Qualcun altro ha riscontrato lo stesso problema e avete una soluzione alternativa o una soluzione al problema diversa da quella che ho descritto sopra?
Stai utilizzando IE per caso? – spig
Evito generalmente IE come la peste. LOL Ma seriamente, sviluppo in Firebox in modo da poter sfruttare Firebug e le sue meraviglie e quindi eseguire test in IE, Chrome e Safari. Perché lo chiedi? Il metodo .live() (risposta sotto) ha risolto questo problema per me. – gurun8
@ gurun8 Perché il parametro uploadFile() non ha alcun parametro? Voglio chiamare un metodo ASP.NET MVC come questo, ma il javascript dovrebbe inviare il file che vuole caricare come parametro –