【问题标题】:input type="file" onchange event, cross browser solutioninput type="file" onchange事件,跨浏览器解决方案
【发布时间】:2012-02-26 18:35:56
【问题描述】:

我正在使用 jquery ajax 文件上传:http://jquery.malsup.com/form/#getting-started

<input type="file" id="foo" name="foo" />

我的问题是 jquery 更改事件没有触发:

$('#foo').change(function(){
    console.log('change');
});

我也尝试过使用on('change', function(){ }) 方法,但没有成功。

感谢任何帮助。谢谢

【问题讨论】:

  • 在哪些浏览器中不触发?你看2133807了吗?
  • 我在 Firefox 中进行了测试。 @Ktash 我想它与插件有关
  • 你用这个插件完成了什么?它添加的许多特性(如serialize)在最新的jQuery 中都是标准的。另外,由于我删除了我的评论,test case 再次。
  • 再次检查并检查这个小提琴,它可以工作。 jsfiddle.net/A8XP3
  • @mcometa 您的小提琴不使用文件上传插件,我认为这是导致问题的原因。没有它,更改事件正常触发。

标签: jquery ajax file-upload


【解决方案1】:

您的问题可能出在绑定的顺序上。

Here 是我用于测试的 jsFiddle。我已将插件链接到此解决方案,似乎只有在 .ajaxForm 之前完成绑定时才会触发更改事件。

如果这不能解决您的问题,请告诉我。

【讨论】:

  • 对我来说实际上是it works either way(在 Chrome 和 FF 9 中测试),但我必须修复表单 url。
【解决方案2】:

试试这个。不知道使用 .live 是否不好,但对我有用,当正常方式不使用时

$('#foo').live('change',function(){
    alert('change');
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-09
    • 2016-03-31
    • 2014-05-03
    • 1970-01-01
    • 2015-07-04
    • 2011-03-05
    相关资源
    最近更新 更多