第二个条件是什么,即使它没有被满足也总是触发?
Why's the second condition always firing even though it's not being fufilled?
我正在检查上传的文件是否 > 5MB。如果是,则抛出错误信息并清除上传的值。效果不错。
我还想检查文件是否是 .mov
类型。如果是,则抛出错误信息并清除上传的值。
我不明白为什么我的第二个条件总是触发。我希望它位于上传 .mov
文件类型的位置,仅抛出第二个 if 条件的错误消息,而不是第一个 if 条件的错误消息(完全忽略它)。
我尝试过使用 else if
和 else {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;
}
});
这会将两个检查合并为一个条件。他们都必须满足才能继续。
您必须使用第一个 if
的 return
结尾来防止 运行 其他 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
设置为第一个 if
的 else
状态:
$(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('');
}
}
});
我正在检查上传的文件是否 > 5MB。如果是,则抛出错误信息并清除上传的值。效果不错。
我还想检查文件是否是 .mov
类型。如果是,则抛出错误信息并清除上传的值。
我不明白为什么我的第二个条件总是触发。我希望它位于上传 .mov
文件类型的位置,仅抛出第二个 if 条件的错误消息,而不是第一个 if 条件的错误消息(完全忽略它)。
我尝试过使用 else if
和 else {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;
}
});
这会将两个检查合并为一个条件。他们都必须满足才能继续。
您必须使用第一个 if
的 return
结尾来防止 运行 其他 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
设置为第一个 if
的 else
状态:
$(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('');
}
}
});