2016-04-15 66 views
1

我从HTML调用onchange函数。它第一次按预期工作。但第二次,它不是。甚至连调试器都没有在功能上发挥作用。On Change第二次不工作

HTML

@Html.TextBoxFor(m => m.Attachment.AttachmentFile, new { type = "file", onchange = "GetAttachmentFileName()", style = "display:none" }) 

的JavaScript

function GetAttachmentFileName() { 
     $("#Filesize").hide(); 
     if ($("#Attachment_AttachmentFile").val() != null && $("#Attachment_AttachmentFile").val() != "") { 
      var filename = $("#Attachment_AttachmentFile").val().split('\\').pop().replace(" ", ""); 
      $("#Attachment_StorageName").val(filename); 
      $("#filename").val(filename); 
      $("#attachmentFileerror span").css("display", "none"); 
      var fileSize=0; 
      var maxFileSize = 10240000 // 10MB -> 10000 * 1024 
      fileSize = $("#" + "Attachment_AttachmentFile")[0].files[0].size //size in kb 
      if(fileSize>maxFileSize){ 
       $("#Filesize").html("Please choose file less than 10MB"); 
       $("#Filesize").css("display", "block"); 
       $('#filename').val(''); 
      } 
      else{ 
       $("#Filesize").css("display", "none"); 
      } 
     } 
     else 
      $("#Attachment_StorageName").val(""); 
} 
+0

感谢里翁:这应该重置onchange()事件,以便将再次触发(如如果实际文件名不同,它才会被触发)。 – John

回答

1

你可能要考虑明确地清理掉你的文件<input>的内容时添加的文件过大。为了使编辑..感谢您的帮助

if(fileSize>maxFileSize){ 
     $("#Filesize").html("Please choose file less than 10MB"); 
     $("#Filesize").css("display", "block"); 
     $('#filename').val(''); 
     $("#Attachment_AttachmentFile").val('')' 
} 
+0

你对这个CodeCaster是对的。我会改变它以更好地反映这一点。 –

+0

@RionWilliams我根据你的建议修改了功能。但是这不起作用..我修改了$(“#Attachment_AttachmentFile”)。val(null);和$('#filename')。val(null);是他们的任何其他方式..欣赏你的帮助 – John

+0

只有当文件太大时才会出现这种情况吗?或者,你似乎只能将文件设置为一次?我已经更新了我的代码,因为我认为'val()'调用完全不是问题。 –

相关问题