2012-08-08 9 views
40

Il codice è:Come gestire l'evento onchange sul tipo di input = file in jQuery?

<input ID="fileUpload1" runat="server" type="file" 

Il seguente funziona bene:

<input onchange="javascript:alert('hola');" ID="fileUpload1" runat="server" type="file" 

Mi piacerebbe ottenere questo risultato utilizzando jQuery, ma che non funziona:

$('#fileUpload1').change(function (e) { 
    alert("hola"); 
}); 

Mi manca qualcosa? (Edit: Sì ho perso includono il * .js file.)

+1

L'id dell'elemento è ' "fileUpload1"' 'non "fileupload1"'. Stai eseguendo il tuo codice anche dopo che l'elemento esiste e hai incluso jQuery etc? Controlla anche la console del tuo browser per gli errori javascript. – Esailija

+0

Ho cercato parole chiave simili, ma sto cercando la versione "no jQuery" ... –

risposta

2

tenta di utilizzare questo:

HTML:

<input ID="fileUpload1" runat="server" type="file"> 

JavaScript:

$("#fileUpload1").on('change',function() { 
    alert('Works!!'); 
}); 

+2

Evento sbagliato e id errato. – Esailija

+0

Ci scusiamo per non aver visto correttamente il problema ... ora controlla @Esailija –

4

Dovrebbe essere ok, stai avvolgendo il codice in una chiamata $(document).ready()? Se non utilizzare tale o utilizzare live cioè

$('#fileupload1').live('change', function(){ 
    alert("hola"); 
}); 

Ecco una jsFiddle di questo lavoro contro jQuery 1.4.4

+3

live è deprecato, si dovrebbe usare su() al giorno d'oggi – Simon

+1

Si sta usando v1.4.4 che non supporta 'on()' – Chris

+3

'live' è deprecato per tutte le versioni di jQuery, usare '.delegate' – Esailija

3

Questo jsfiddle funziona bene per me.

$(document).delegate(':file', 'change', function() { 
    console.log(this); 
}); 

Nota: .delegate() è il metodo più veloce vincolante evento per jQuery < 1.7: event-binding methods

+0

1.4.4. Il lavoro del Dosent. – anmarti

+0

ha aggiornato la mia risposta – Simon

8

Oppure potrebbe essere:

$('input[type=file]').change(function() { 
    alert("hola"); 
}); 

Per essere precisi: $('input[type=file]#fileUpload1').change(...

2
$('#fileupload').bind('change', function (e) { //dynamic property binding 
alert('hello');// message you want to display 
}); 

È possibile utilizzare anche questo

Problemi correlati