我在页面上有多个文件输入。这些是唯一定义的,我不能使用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
});
由于
答案 0 :(得分:3)
我认为你无法做到: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
(非数字)