【问题标题】:How can I catch the "file selected" event?如何捕捉“文件选择”事件?
【发布时间】:2018-10-09 16:03:34
【问题描述】:

我的application 中有以下对话框:

当用户按下Add logo按钮时,应该会发生以下事情:

  1. 应该会弹出一个文件选择对话框。
  2. 用户选择文件后,应调用一个函数(该函数将更新图像)。

我有以下代码。用于文件选择的markup 如下所示:

<button class="btn" ng-click="$ctrl.addLogo()">Add logo</button>

$ctrl.addLogo() 定义为 (source)

$ctrl.addLogo = function() {
    console.log("'Add logo' button clicked");
    var uploadForm = document.createElement('form');
        var fileInput = uploadForm.appendChild(document.createElement('input'));
    fileInput.type = 'file';
        fileInput.name = 'images';
    fileInput.multiple = true;
        fileInput.click(function() {
        console.log("Click callback called");
    });
};

当我按下Add logo 按钮时,文件选择对话框会打开,但Click callback called 消息不会出现在控制台中。这意味着当用户选择了一个文件(或使用“取消”关闭对话框)时,我无法检测到。

如何对用户选择文件(或取消对话框)做出反应?

【问题讨论】:

标签: javascript angularjs file-upload


【解决方案1】:

当用户使用type="file" 选择input 中的文件时,将触发change 事件。

如果您用change 侦听器替换您的click 侦听器,它应该可以工作:)

fileInput.click(function() {
    console.log("Click callback called");
});

必须变成:

fileInput.change(function() {
    console.log("Click callback called");
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-12
    • 1970-01-01
    • 1970-01-01
    • 2018-10-13
    • 2019-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多