javascript - 触发 <input type ="file"/> 的 javascript 事件 onchange 事件

标签 javascript jquery html input blueimp

我有这个代码

<input id="fileupload" 
       type="file" name="files[]" 
       class="inputFile clickable" 
       onchange="uploadFile(this.value)"/>

第二次使用它时效果很好,即我第一次选择文件时不会触发 onchange 事件,但第二次选择文件时效果很好。

这里有什么我可以改变的吗?

我试过:

  • onlclick(不起作用,在选择文件之前触发)
  • onblur(不起作用,根本不触发,而且即使触发,点击页面上的其他地方来触发操作也是愚蠢的)
  • onselect(不起作用)

附加信息: 如果我使用 onchange=alert(this.value) 它工作正常

这是我的javascript代码

function uploadFile(value) {
     alert(value); //works fine
    $('#fileupload').fileupload({
        dataType: 'json',
        url: 'fileUpload.php',
        type: 'POST',
        limitConcurrentUploads: 1,
//        done: function (e, data) {
//            $.each(data.result, function (index, file) {
//                $('<p/>').text(file.name).appendTo(document.body);
//            });
//        },
        success: function() {
            showMultipleDataDiv(value); //but I don't get value here
        }
    });
}

最佳答案

代码 $('#fileupload').fileupload 将在用户选择文件后立即触发文件上传。您需要在用户选择文件之前运行这段代码,因为它向输入标签添加了一个事件监听器。由于您仅在用户选择文件后运行此代码,因此它只会在第二次运行。

这是你需要做的改变才能让它发挥作用

$(function () {
  $('#fileupload').fileupload({
    dataType: 'json',
    url: 'fileUpload.php',
    type: 'POST',
    limitConcurrentUploads: 1,
    //        done: function (e, data) {
    //            $.each(data.result, function (index, file) {
    //                $('<p/>').text(file.name).appendTo(document.body);
    //            });
    //        },
    success: function () {
      showMultipleDataDiv(value); //but I don't get value here
    }
  });
});

请注意,无需在更改事件中添加代码。该插件将为您做到这一点。

您可以在这里阅读更多相关信息:https://github.com/blueimp/jQuery-File-Upload/wiki/Basic-plugin

关于javascript - 触发 &lt;input type ="file"/> 的 javascript 事件 onchange 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12383968/

相关文章:

javascript - 隐藏时折叠导航树

javascript - 如何在 meteor 中为 Stripe 卡充值

javascript - 使用 Javascript 替换 HTML 元素的背景颜色

html - html div 堆叠在一起的对齐问题

java - 将 HTML 解析为纯文本,但保留每个字符的标签信息

javascript - 基本 slider : Place caption under image

javascript - 编辑电话号码时,光标跳到末尾

javascript - jQuery 用于选择具有特定直接子级的标签

javascript - 使用javascript删除表的行

javascript - JS 的背景图像样式在 ie9 中不起作用