首页 > 解决方案 > 检查多个上传输入 - 未定义的变量

问题描述

我正在尝试检查上传文档的大小到 2 个单独的输入字段,我得到了

类型错误:fileUpload1.files[0] 未定义

但是有一个 if 语句可以避免这种情况但不起作用(如果没有附加上传)

我尝试移动 if 语句的位置,但同样的问题,我是否遗漏了一些明显的东西,JS 如下:

<script type="text/javascript">
    function Upload() {
        var fileUpload = document.getElementById("Evidence11");
        var fileUpload1 = document.getElementById("Evidence12");

        if (typeof (fileUpload1.files) != "undefined") {
        var size1 = parseFloat(fileUpload1.files[0].size / 1024).toFixed(0);
        }


        if (typeof (fileUpload.files) != "undefined") {
            var size = parseFloat(fileUpload.files[0].size / 1024).toFixed(0);
            size = parseFloat(size) + parseFloat(size1);
            if (size >= 4096) { 
                    alert( 
                      "File too Big, please select a file less than 4mb"); 
                      document.getElementById("demo").innerHTML =  "The file too big(" + size + "kb), please select a file less than 4mb.";
                } else { 
                    document.getElementById("demo").innerHTML =  "File size is less that 4mb (" + size + "KB) and ok to continue.";
                    var element = document.getElementById("nextBButton");
                    element.classList.add("revButton");
                } 

        } else {
            alert("This browser does not support HTML5.");
        }
    }
</script>


<?php } ?>

标签: javascripthtml

解决方案


您正在检查 files 属性是否未定义,默认情况下它是一个类似数组的对象,因此它通过了检查,因为 fileUpload.files 不是 null 而是一个[object FileList]. 但 fileUpload.files[0] 为空,因为其中没有元素,您可以检查文件数组中的第一项是否为空,或检查其长度。

if (fileUpload1.files[0]) {
   //do your thing 
}

推荐阅读