【问题标题】:jQuery .on('change') function doesn't work on input[type=file]jQuery .on('change') 函数在 input[type=file] 上不起作用
【发布时间】:2013-01-18 08:15:17
【问题描述】:

我有类似的东西:

$('input[type=file]').on('change', function(){ 
console.log('changed!'); });

它不起作用。它适用于其他表单元素,但不适用于 input[type=file]。但是,当我将 .on() 函数更改为 .live() 时,它工作正常。我使用 jQuery 1.8.3,但我想升级到 1.9.0,这样就不会再有 .live() 函数了。有什么想法吗?

【问题讨论】:

    标签: jquery


    【解决方案1】:

    “开”适用于 jquery 1.8.3。您可以尝试此代码并查看下面的演示,该演示适用于我的 jquery 1.8.3。

    $('input[type="file"]').on('change', function(event){ 
         console.log('changed!'); 
    });
    

    试试这个:Demo

    【讨论】:

    • 当我在 JSFiddle 上更改为 Jquery 1.9.0 时,同样的代码对我有用。
    【解决方案2】:

    我有理论:

    您确定您的选择器 $('input[type=file]') 实际上正在检索任何元素吗?如果您将输入动态插入到 DOM 中,则很有可能在运行选择器时它们不存在,这可以解释为什么 .live 有效。

    尝试使用这段代码:

    $('body').on('change', 'input[type=file]', function(event){
        console.log('Changed!');
    });
    

    如果它有效,你就发现了你的问题......你在元素存在之前选择它们并在代码运行后将它们插入到 DOM 中。

    【讨论】:

    • 上帝保佑你!!
    【解决方案3】:

    你也可以试试

    $('input:file').on('change', function(event){ 
         console.log('changed!'); 
    });
    

    【讨论】:

      猜你喜欢
      • 2013-12-07
      • 1970-01-01
      • 1970-01-01
      • 2017-10-21
      • 2018-10-30
      • 2010-12-22
      • 2011-04-24
      • 2020-11-30
      • 1970-01-01
      相关资源
      最近更新 更多