如何选择输入类型= 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]
相同?
两者不同,因为第一个将从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>
'.files是不是jQuery方法。“它不是一种方法。不是吗? –
@RajaprabhuAravindasamy你是对的,'.files'是'input'元素的属性,而不是方法 – guest271314
'缬氨酸()'在文件输入只会给你的文件名字符串 – charlietfl