我在一个页面上有多个文件输入。这些是唯一定义的,我不能为此使用 multiple 属性。当他们提交此表单时,脚本会运行并检查每个上传元素上的空值。
我创建了一个小的状态加载器,它可以为用户提供一些不错的视觉反馈,我想做的部分工作是向他们显示总上传大小。不幸的是,我所写的是针对 DOM 元素而不是它所引用的实际文件。我已阅读 API 文档和 this但我在这里遗漏了一些东西。
jQuery( "#submit" ).on("click", function(event) {
var inputs = document.getElementsByTagName('input'),
files = [],
size;
for(i=0; i<inputs.length; i++) {
if( inputs[i].getAttribute('type') == "file" && inputs[i].value != 0 ) {
files.push(inputs[i].id);
}
}
for(j=0; j<files.length; j++) {
size += document.getElementById(files[j]).size;
}
console.log(size); //returns NAN
//other stuff
});
谢谢
最佳答案
我不认为你可以这样做:document.getElementById(files[j]).size
,.size
属性在那里不存在。
尝试从 document.getElementById(files[j]).files
读取。
你可以这样:document.getElementById(files[j]).files[0].size
我认为是否有 multiple="multiple"
并不重要。
请记住,您的代码中存在错误。 size
的初始值为 undefined
并且 undefined + 1234
为 NaN
(不是数字)
关于Javascript - 确定文件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17318099/