检查上传文件大小,如果大于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>firefoxchromeie8

解决方案 »

  1.   

    <button class="btn"  onclick="return dosubmit();">提交</button>
      

  2.   


    1楼做法的确可行,
    我试了下<button class="btn"  onclick="dosubmit();return false;">提交</button>也是可行的。
    但是不是很明白,为什么要return false。这个按钮没有其它操作啊,不知道为什么要加这个防止默认事件。
    而默认事件为什么是提交表单。
      

  3.   


    1楼做法的确可行,
    我试了下<button class="btn"  onclick="dosubmit();return false;">提交</button>也是可行的。
    但是不是很明白,为什么要return false。这个按钮没有其它操作啊,不知道为什么要加这个防止默认事件。
    而默认事件为什么是提交表单。
    button标签的默认type是type='submit'
    基本知识了
      

  4.   


    1楼做法的确可行,
    我试了下<button class="btn"  onclick="dosubmit();return false;">提交</button>也是可行的。
    但是不是很明白,为什么要return false。这个按钮没有其它操作啊,不知道为什么要加这个防止默认事件。
    而默认事件为什么是提交表单。
    button标签的默认type是type='submit'
    基本知识了
    好的,原来如此。非常感谢