如何在jQuery中处理input type=file的onchange事件?

51

代码如下:

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

以下代码可以正常工作:

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

我想使用jQuery来获得这个结果,但是它不起作用:

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

我漏掉了什么吗?(编辑:是的,我漏掉了包含*.js文件。)


1
元素的ID是"fileUpload1"而不是"fileupload1"。您是否在元素存在并且已经包含了jQuery等之后运行代码?还要检查浏览器控制台是否有JavaScript错误。 - Esailija
我搜索了类似的关键词,但我正在寻找“无jQuery”版本... - Mars Robertson
6个回答

121

12

或者可能是:

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

具体来说:$('input[type=file]#fileUpload1').change(...


5
这个 jsfiddle 对我来说很好用。
$(document).delegate(':file', 'change', function() {
    console.log(this);
});

注意:.delegate()是jQuery <1.7版本中最快的事件绑定方法:事件绑定方法

4

它应该可以正常工作,你是否将代码包含在$(document).ready()调用中?如果没有,请使用它或使用live,例如:

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

这里有一个关于jQuery 1.4.4的jsFiddle示例。

3
现在不推荐使用"live",应该改用"on()"。 - Simon
1
他正在使用v1.4.4版本,该版本不支持on() - Chris
3
live 在所有 jQuery 版本中都已被弃用,请使用 .delegate - Esailija

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

你也可以使用这个


2
尝试使用以下内容:

HTML:

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

JavaScript:

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


抱歉,我没有正确地看到问题...现在请检查@Esailija。 - Arpit Srivastava

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接