2012-08-08 9 views
40

El código es:Cómo manejar el evento onchange en el tipo de entrada = archivo en jQuery?

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

La siguiente funciona bien:

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

me gustaría conseguir este resultado usando jQuery, pero que no funciona:

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

Me falta algo? (Edit: Sí, lo perdió incluyen el * .js archivo.)

+1

El id del elemento es ' "fileUpload1"' 'No "fileupload1"'. ¿También está ejecutando su código después de que el elemento existe y ha incluido jQuery, etc.? También consulte la consola de su navegador para ver si hay errores de JavaScript. – Esailija

+0

Busqué palabras clave similares, pero estoy buscando la versión "no jQuery" ... –

Respuesta

2

intenta utilizar esto:

HTML:

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

JavaScript:

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

+2

Evento erróneo y una identificación incorrecta. – Esailija

+0

Disculpe porque no vi el problema correctamente ... ahora marque @Esailija –

4

Debería w Bien, ¿está ajustando el código en una llamada $(document).ready()? Si no usar o usar que live decir

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

Aquí es un jsFiddle de este trabajo en contra de jQuery 1.4.4

+3

en vivo está en desuso, uno debe usar en() hoy en día – Simon

+1

Está usando v1.4.4 que no admite 'on()' – Chris

+3

'live' es en desuso para todas las versiones de jQuery, use '.delegate' – Esailija

3

Este jsfiddle funciona bien para mí.

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

Nota: .delegate() es el método más rápido vinculante eventos para jQuery < 1.7: event-binding methods

+0

1.4.4. Trabajo de Dosent. – anmarti

+0

actualizó mi respuesta – Simon

8

O podría ser:

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

Para ser específico: $('input[type=file]#fileUpload1').change(...

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

Usted puede usar este también

Cuestiones relacionadas