【问题标题】:jQuery file input on change not triggering更改时的jQuery文件输入未触发
【发布时间】: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/

【问题讨论】:

    标签: javascript jquery jquery-events html-input


    【解决方案1】:

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

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

    我使用的javascript代码如下。

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

    【讨论】:

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

    2. 你不需要你的第二个函数

    所以:

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

    【讨论】:

    • 谢谢,我不知道 on("ready" 在 1.8 中已被弃用,这两个答案都对我有用,但 Alex 先回答了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-28
    • 1970-01-01
    • 2018-07-17
    • 2023-03-13
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    相关资源
    最近更新 更多