Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
防止使用Javascript更改文件输入(JQuery)_Javascript_Jquery_Html_Input - Fatal编程技术网

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

防止使用Javascript更改文件输入(JQuery),javascript,jquery,html,input,Javascript,Jquery,Html,Input,如果我有条件地告诉用户文件太大,我会尝试阻止文件输入被更改,但即使捕获更改并阻止默认设置,它仍会填充在ie中: // CHECK FILE ISNT ABOVE 500MB ON CHANGE $(".upload-file").change(function (e) { // conditional checks var fileSize = $('.upload-file').get(0).files[0].size; /

如果我有条件地告诉用户文件太大,我会尝试阻止文件输入被更改,但即使捕获更改并阻止默认设置,它仍会填充在ie中:

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

  

      });

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

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

$('.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");
        }
    }
});

还要注意,此.files[0].size返回的文件大小以字节为单位。因此,根据您的验证,您将不允许上载大小超过50字节的文件。如果条件不匹配,我建议重置输入类型=文件,如下所示:

$('.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");
        }
    }
});

还要注意,此.files[0].size返回的文件大小以字节为单位。因此,根据您的验证,如果要重置文件输入,您将不允许上载大小超过50字节的文件:

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

如果要重置文件输入:

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

下面的代码将检查文件大小,如果它高于阈值(maxFileSize),则会抛出错误并重置文件上载对话框。这将阻止对文件进行任何进一步处理,例如,如果您在提交表单之前以某种方式操作文件

$(文档).ready(函数(){
$('.upload file')。on('change',函数(e){
试一试{
var fileSize=0;
var maxFileSize=5//以mb为单位
fileSize=$('.upload file')[0]。文件[0]。大小//大小(kb)
fileSize=fileSize/1048576;//大小(mb)
如果(fileSize>maxFileSize)抛出“太大”;
}
捕获(e){
警报(“对不起,文件太大。请选择一个小于“+maxFileSize+'Mb”);
$('.upload file').val(null);
}
});	

});
下面的代码将检查文件大小,如果超过阈值(maxFileSize),则会抛出错误并重置文件上载对话框。这将阻止对文件进行任何进一步处理,例如,如果您在提交表单之前以某种方式操作文件

$(文档).ready(函数(){
$('.upload file')。on('change',函数(e){
试一试{
var fileSize=0;
var maxFileSize=5//以mb为单位
fileSize=$('.upload file')[0]。文件[0]。大小//大小(kb)
fileSize=fileSize/1048576;//大小(mb)
如果(fileSize>maxFileSize)抛出“太大”;
}
捕获(e){
警报(“对不起,文件太大。请选择一个小于“+maxFileSize+'Mb”);
$('.upload file').val(null);
}
});	

});
以这种方式无法实现您的要求。在触发
更改
事件之前,已选择该文件。如果选择了无效文件,您需要修改逻辑以防止表单触发
submit
事件。请防止提交文件。添加文件后,您无法停止添加文件…为什么,一切都发生在客户端,当您检查文件大小时,文件已添加到输入中。您应该阻止上传文件,但实际上没有必要阻止用户将文件添加到浏览器中您无法通过这种方式实现所需的功能。在触发
更改
事件之前,已选择该文件。如果选择了无效文件,您需要修改逻辑以防止表单触发
submit
事件。请防止提交文件。添加文件后,您无法停止添加文件…为什么,一切都发生在客户端,当您检查文件大小时,文件已添加到输入中。您应该阻止上载该文件,但实际上没有必要阻止用户在浏览器中添加该文件