2016-04-15 7 views
1

私はHTMLからonchange関数を呼び出しています。これは、初めて期待どおりに動作します。しかし、二度目はそうではありません。デバッガでさえ関数にヒットしていません。変更が2回目で機能しない

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

ありがとうリオンの編集が...あなたの助けに感謝作るため。 – John

答えて

1

あなたが追加されたファイルが大きすぎたとき、あなたのファイル<input>の内容をクリアし、明示的に検討する必要があります。 (実際のファイル名が異なっている場合にのみトリガーされるように)それが再びトリガするように、これはonchange()イベントをリセットする必要があります。

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);彼らの他の方法です..あなたの助けを歓迎 – John

+0

これはファイルが大きすぎる場合にのみ発生しますか?または、ファイルを1回だけ設定することはできますか?私は 'val()'呼び出しが全く問題ではなかったので、私のコードを更新しました。 –

関連する問題