为什么我的输入类型=文件没有加载文件信息?

Chr*_*ris 4 html javascript jquery html5

试着理解这个问题.我有一个<input type='file'>元素用于上传文件,作为旧版浏览器用户拖放选项的替代选项.

拖放上传工作正常,但由于某些原因使用输入选择文件时,files对象返回undefined.

在下面的示例中,我已经包含了一个测试变量来检查事件监听器是否正常工作 - 它是什么 - 但是尝试记录文件的内容是不行的 - 我是否尝试记录完整对象或单个属性.

这是代码:

HTML:

 <input type="file" id='uploadFile'>
Run Code Online (Sandbox Code Playgroud)

Javascript(jQuery)

 doc.on('change', '#uploadFile', function(){
    var file = $(this);
    var test = 'Event Triggered';
    console.log(test);               //Returns 'Event Triggered'
    console.log(file.files);         //Returns undefined
    console.log(file.files[0]);      //Returns TypeError: cannot read property '0' of undefined
 });
Run Code Online (Sandbox Code Playgroud)

我哪里错了?不禁觉得这是一个愚蠢的疏忽,但任何帮助都会受到赞赏.

谢谢!

Ror*_*san 6

files属性位于DOMElement上,而不是jQuery对象.试试这个:

$(document).on('change', '#uploadFile', function() {
    var file = $(this)[0]; // note the [0] to return the DOMElement from the jQuery object
    var test = 'Event Triggered';

    console.log(test);
    console.log(file.files);
    console.log(file.files[0]);
});
Run Code Online (Sandbox Code Playgroud)

工作实例


Piy*_*oor 3

doc.on('change', '#uploadFile', function(e){
    var file = $(this);
    var test = 'Event Triggered';
console.log(e.target.files)

 });
Run Code Online (Sandbox Code Playgroud)

使用 event.target.files