更改时的jQuery文件输入未触发

Posted

技术标签:

【中文标题】更改时的jQuery文件输入未触发【英文标题】:jQuery file input on change not triggering 【发布时间】:2016-04-25 05:04:35 【问题描述】:

我绑定了两个单独的事件进行测试,但无论出于何种原因,当我选择一个文件时,它们都没有触发。我确定我今天只是没有喝足够的咖啡,但这似乎是检测文件选择的正确方法。

html

<input type="file" id="files">

JS:

$(document).on("ready", function() 

    $("#files").on("change", function() 
        alert("Files changed.");
    );

    $(document).on("change", "#files", function() 
        alert("Files changed.");
    );

);

示例:https://jsfiddle.net/snoapps/66y45hjh/

【问题讨论】:

【参考方案1】:

https://jsfiddle.net/66y45hjh/2/

您的第二个函数是正确的,但函数嵌套的方式不会让它按照您想要的方式执行。看看我对你的小提琴所做的编辑。

我使用的javascript代码如下。

$(function() 
    $(document).on("change", "#files", function() 
        alert("Files changed.");
    );
);

【讨论】:

你能解释一下否决票吗?代码按预期工作。 这行得通,使用 $(function() ); 有什么意义?在脚本中? (附:我不知道谁投了反对票,不是我) $(function() ); 只是写出$('document').ready(function()); 的一种简化方式。最佳做法是在其中执行触发事件,以确保在用户触发事件之前文档已完全加载【参考方案2】:

    我是$('document').ready(function()); https://api.jquery.com/ready

    你不需要你的第二个函数

所以:

$(document).ready(function() 

    $("#files").on("change", function() 
        alert("Files changed.");
    );


);

【讨论】:

谢谢,我不知道 on("ready" 在 1.8 中已被弃用,这两个答案都对我有用,但 Alex 先回答了

以上是关于更改时的jQuery文件输入未触发的主要内容,如果未能解决你的问题,请参考以下文章

按钮更改输入时的警报文本[重复]

jQuery是复选框上的属性更新未触发更改事件

未更改的文件正在触发 nodemon 重新启动

<select> 上的 jQuery 更改事件未在 IE 中触发

rails jquery.turbolinks javascript在页面更改后未触发

选择相同值时的jQuery选择更改事件