使用Javascript(JQuery)防止文件输入更改

时间:2017-08-29 16:30:08

标签: javascript jquery html input

我试图阻止文件输入被更改,如果我有条件地告诉用户文件太大,但是即使捕获更改并防止默认,它仍然填充即:

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;
        }



      });

这是我的代码,我做错了什么?

3 个答案:

答案 0 :(得分:2)

如果要重置文件输入:

$(".upload-file").val(null);

答案 1 :(得分:0)

如果条件不匹配,我建议重置输入类型=文件:

baz

另请注意,this.files [0] .size以字节为单位返回文件大小。因此,根据您的验证,您将不允许上传大小超过50字节的文件

答案 2 :(得分:0)

下面的代码将检查文件大小,如果它超过阈值(maxFileSize),则会引发错误并重置文件上传对话框。这样可以防止进一步处理文件,例如,如果您在提交表单之前以某种方式处理文件。

$(document).ready(function() {
	$('.upload-file').on('change', function(e) {
     try {
     var fileSize = 0;
	 var maxFileSize = 5 // in mb
      fileSize = $('.upload-file')[0].files[0].size //size in kb
      fileSize = fileSize / 1048576; //size in mb 
 
      if (fileSize > maxFileSize) throw "Too big";
      }
      catch (e) {
      alert("Sorry, file is too large. Please select one that is smaller than "+maxFileSize +' Mb');
	  $('.upload-file').val(null);
      }
      

	});	
});