我有一个文件上传表单,我在最终提交表单之前通过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>
我认为错误可能是因为我使用的是bind。任何帮助都会非常感激。谢谢你
答案 0 :(得分:2)
这里有一个多事件呼叫。
每次调用upfunc()时,都会附加一个Submit事件。
您可以考虑宣布提交事件一次或在{之前}使用$( "#uploadsfrm" ).unbind('submit')
$( "#uploadsfrm" ).submit(function()....
所以实际上,第一次打电话你将有1个事件监听器,第二个电话你将附加另一个事件,现在总计达2..there直到无限。 e.preventProgration或StopDefault不会有帮助,因为它是相同的对象,因此它不会停止调用事件。 即使它会有所帮助,也只是一段糟糕的代码:(