日期:2014-05-16  浏览次数:20420 次

检验上传文件大小遇到的诡异问题
检查上传文件大小,如果大于1M时不让其提交。代码在IE8下没问题,但在firefox或者chrome下,
超于1M的文件仍然提交了。怀疑是不是firefox不支持return flase;但是小弟在校验其他的表单提交时return flase都是可以的。求大神指导。
对document.myform.submit()处打断点,并没有发现被调用。不知道到底哪里触发提交表单的。


<script>
var fileflag = true;
var isIE = /msie/i.test(navigator.userAgent) && !window.opera;
function dosubmit(){
    if(fileflag==false){
        alert("文件不能大于1M");
                return false;                
            }
               document.myform.submit();
}
function fileonChange(target){
var fileSize = 0; 
var k = target.id.substring(8);
if (isIE && !target.files){
    var filePath = target.value;
    var fileSystem = new ActiveXObject("Scripting.FileSystemObject");       
    var file = fileSystem.GetFile(filePath);    
    fileSize = file.Size;  
}else{
    fileSize = target.files[0].size;    
}  
    var size = fileSize / 1024;   
    if(size>10){
                  alert("文件不能大于1M");
                    fileflag = false;
    }else{
           fileflag = true;
    }
}

</script>

<s:form name="myform" id="myform" action="addOrder.action"  enctype="multipart/form-data" target="ajaxUpload">
<input id="addfile" type="file" name="file" onchange="fileonChange(this);">
<button class="btn"  onclick="dosubmit();">提交</button>
</s:form>
firefox chrome ie8