我有一个文件上传表单,在最终提交表单之前,我正在通过javascript检查文件大小。表单运行正常,当我尝试上传的文件大小超过上述大小时,它会在第一次显示正确的警报。但是,如果我再次单击上载而未选择其他文件,则会两次收到相同的警报。如果我再次重复该过程,则会收到3次警报。下面是代码
<script>
var flag=0;
$('#filename').bind('change', function() {
var filesiz = this.files[0].size;
if (filesiz >10485760)
{flag=1;}
else
{flag=0;}
});
function upfunc(){
$('#smalldata').hide();
$('#invalidfile').hide();
$('#invalidfile9').hide();
if($( "#UserComments" ).hasClass( "textAreaField valid" ) && $( "#filename" ).hasClass( "valid" )){
$('#loading_image').show(); // show animation
$( "#uploadsfrm" ).submit(function() {
if(flag==1)
{alert ('File size cannot exceed 10 MB.');
$('#loading_image').hide();
return false;
//event.preventDefault();
}
else
return true;
});
}
}
</script>
我认为错误可能是因为我正在使用绑定。任何帮助将不胜感激。谢谢
最佳答案
您有一个多事件在这里调用。
每次调用upfunc()时,都会附加一个Submit事件。
您可以考虑一次声明一次Submit事件,也可以在之前使用$( "#uploadsfrm" ).unbind('submit')
$( "#uploadsfrm" ).submit(function()....
因此,实际上,第一次调用将具有一个事件侦听器,第二次调用将附加另一个事件,该事件现在总计为2。
e.preventProgration或StopDefault将无济于事,因为它是相同的对象,因此不会停止事件的调用。
即使有帮助,也只是一段不好的代码:(