inputtypes=“文件”的jQuery更改方法

我试图用它简单和优雅的API来接受jQuery 100%,但是我遇到了API和直接的HTML之间的不一致,我不太明白。

我有一个AJAXfile upload器脚本(function正常),我想运行每次文件input值的变化。 这是我的工作代码:

<input type="file" size="45" name="imageFile" id="imageFile" onchange="uploadFile()"> 

当我将onchange事件转换为jQuery实现时:

 $('#imageFile').change(function(){ uploadFile(); }); 

结果是不一样的。 使用onchange属性时,可以随时调用uploadFile()函数,如所期望的那样进行更改。 但是使用jQuery API .change()事件处理程序,事件只会在第一次更改值时触发。 之后的任何值更改都将被忽略。 这似乎是错误的,但肯定这不能由jQuery监督,对不对?

有没有其他人遇到同样的问题,除了上面介绍的内容之外,您是否有解决方法或解决scheme?

是刷新您的input元素的ajax上传? 如果是的话,你应该考虑使用.live()方法。

  $('#imageFile').live('change', function(){ uploadFile(); }); 

更新:

从jQuery 1.7+你现在应该使用.on()

  $(parent_element_selector_here or document ).on('change','#imageFile' , function(){ uploadFile(); }); 

从jQuery 1.7开始,.live()方法已被弃用。 使用.on()附加事件处理程序。 老版本的jQuery用户应该优先使用.delegate().live()。 请参阅: http : //api.jquery.com/on/

 $('#imageFile').on("change", function(){ uploadFile(); }); 

我无法让IE8 +通过向文件inputtypes添加jQuery事件处理程序来工作。 我不得不去老派,并添加onchange=""属性到input标签:

 <input type='file' onchange='getFilename(this)'/> function getFileName(elm) { var fn = $(elm).val(); .... }