2017-08-29 41 views
0

我試圖防止文件輸入被更改,如果我有條件地告訴用戶該文件太大,但即使捕獲更改並防止默認,它仍然填充即:防止使用Javascript更改文件輸入(jQuery)

enter image description here

// CHECK FILE ISNT ABOVE 500MB ON CHANGE 
     $(".upload-file").change(function (e) { 

     // conditional checks 
     var fileSize = $('.upload-file').get(0).files[0].size; // in bytes 

     if (fileSize > 500000000) { 
      e.preventDefault(); 
      swal('File size is more than 500 MB, please upload a smaller file. Support for larger files will be rolled out soon.'); 
      return false; 
     } 



     }); 

這裏是我的代碼,我究竟做錯了什麼?

+0

你不能以這種方式達到你所要求的。該文件已在「change」事件觸發前被選中。如果選擇了無效文件,則需要修改邏輯以防止表單發出'submit'事件。 –

+0

防止提交該文件。在添加文件之後,您無法停止添加文件... – evolutionxbox

+0

爲什麼所有內容都發生在客戶端,在您檢查文件大小的時候,文件已添加到輸入中。您應該防止文件被**上傳**,但實際上並不需要阻止用戶在瀏覽器中添加文件 – adeneo

回答

1

如果要重置文件輸入(「上傳文件」)

$ VAL(空。 );

0

我建議重置輸入類型=文件,如果條件不如下匹配:

$('.upload-file').on("change", function (e) { 
    if (this.files[0] != null) { 
     var fileSize = this.files[0].size; 
     if (fileSize > 50) { 
      alert("File too large!"); 
      var control=$("#"+$(this).attr('id'));//get the id 
      control.replaceWith(control = control.clone().val(''));//replace with clone 
      return; 
     } 
     else { 
      alert("File ok"); 
     } 
    } 
}); 

另外別注意,this.files [0] .size返回文件的大小以字節計。所以要根據您的驗證,你不會允許上傳文件的大小爲超過50個字節