使用jQuery时,提交多次执行函数

时间:2013-12-23 12:38:10

标签: javascript jquery

我有一个文件上传表单,我在最终提交表单之前通过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。任何帮助都会非常感激。谢谢你

1 个答案:

答案 0 :(得分:2)

这里有一个多事件呼叫。 每次调用upfunc()时,都会附加一个Submit事件。 您可以考虑宣布提交事件一次或在{之前}使用$( "#uploadsfrm" ).unbind('submit')  $( "#uploadsfrm" ).submit(function()....

所以实际上,第一次打电话你将有1个事件监听器,第二个电话你将附加另一个事件,现在总计达2..there直到无限。 e.preventProgration或StopDefault不会有帮助,因为它是相同的对象,因此它不会停止调用事件。 即使它会有所帮助,也只是一段糟糕的代码:(