如何选择输入类型= jquery中的文件工作

问题描述:

我正在学习关于如何使用ajax上传文件的教程,并且我遇到了这一行代码。如何选择输入类型= jquery中的文件工作

var fileToUpload = $('input[type="file"]')[0].files[0]; 
// I change it to this. And now its undefined. 
var fileToUpload = $('input[type="file"]').files[0]; 

对于选择输入类型文件与选择输入类型文本有何不同,我真的很困惑。并且还使用.val()与使用[0].files[0]相同?

+0

'缬氨酸()'在文件输入只会给你的文件名字符串 – charlietfl

两者不同,因为第一个将从node object调用.file[0],而第二个调用.file[0]而不是包装jquery object。由于jQuery对象不包含类似文件的任何财产,第二个会抛出错误,如Uncaught TypeError: Cannot read property '0' of undefined(…)

同时.val()将返回一个节点对象的value财产,它可以通过jQuery对象通过纯被调用不节点对象。

如果你想检查什么是enumerable properties可用于Jquery,那么只需在控制台中执行以下操作即可。

var x = $(); 
Object.keys(x.__proto__) 

,也是使用.val()一样使用[0].files[0]

.files是返回FileList对象input type="file"元件的 方法 属性。 .files不是jQuery方法。 .val()不返回FileList对象。

使用jQuery检索FileList你可以利用.prop()与参数"files"

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"> 
 
</script> 
 
    <script> 
 
    $(document).ready(function() { 
 
     $(":file").change(function() { 
 
     console.log($(this).prop("files")) 
 
     }) 
 
    }) 
 
    </script> 
 
</head> 
 
<body> 
 
    <input type="file" /> 
 
</body> 
 
</html>

+0

'.files是不是jQuery方法。“它不是一种方法。不是吗? –

+1

@RajaprabhuAravindasamy你是对的,'.files'是'input'元素的属性,而不是方法 – guest271314