第二个条件是什么,即使它没有被满足也总是触发?

Why's the second condition always firing even though it's not being fufilled?

我正在检查上传的文件是否 > 5MB。如果是,则抛出错误信息并清除上传的值。效果不错。

我还想检查文件是否是 .mov 类型。如果是,则抛出错误信息并清除上传的值。

我不明白为什么我的第二个条件总是触发。我希望它位于上传 .mov 文件类型的位置,仅抛出第二个 if 条件的错误消息,而不是第一个 if 条件的错误消息(完全忽略它)。

我尝试过使用 else ifelse {if(...)},但这似乎也不起作用。

我做错了什么?

$(document).on('change', '.uploadedFile', function () {
        var fileSize = this.files[0].size/1024/1024;
        var fileType = /\.(mov)$/i.test(this.files[0]);

        if(fileSize > 5) {
            alert("The video you've uploaded is " + Math.round(fileSize) + "MB.  Please upload a video that's 5MB or less!");
            $('.uploadedFile').val('');
        }

        if(!fileType) {
            alert("Only .mp4 file types are allowed");
            $('.uploadedFile').val('');
        }
    });

考虑以下因素。

$(document).on('change', '.uploadedFile', function() {
  var fileSize = this.files[0].size / 1024 / 1024;
  var fileType = /\.(mov|mpg|mp4)$/i.test(this.files[0]);

  if (!fileType && fileSize > 5) {
    alert("Please upload only .mov, .mpg, or .mp4 Files that are no more than 5 MB.");
    return false;
  }
});

这会将两个检查合并为一个条件。他们都必须满足才能继续。

您必须使用第一个 ifreturn 结尾来防止 运行 其他 if 情况。

$(document).on('change', '.uploadedFile', function () {
            var fileSize = this.files[0].size/1024/1024;
            var fileType = /\.(mov)$/i.test(this.files[0]);
    
            if(fileSize > 5) {
                alert("The video you've uploaded is " + Math.round(fileSize) + "MB.  Please upload a video that's 5MB or less!");
                $('.uploadedFile').val('');
                return;
            }
    
            if(!fileType) {
                alert("Only .mp4 file types are allowed");
                $('.uploadedFile').val('');
            }
        });

或者您可以试试这个,将您的第二个 if 设置为第一个 ifelse 状态:

 $(document).on('change', '.uploadedFile', function () {
            var fileSize = this.files[0].size/1024/1024;
            var fileType = /\.(mov)$/i.test(this.files[0]);

            if(fileSize > 5) {
                alert("The video you've uploaded is " + Math.round(fileSize) + "MB.  Please upload a video that's 5MB or less!");
                $('.uploadedFile').val('');
                
            } else{
             if(!fileType) {
                alert("Only .mp4 file types are allowed");
                $('.uploadedFile').val('');
            }
           }

           
        });