【发布时间】:2021-04-08 01:16:41
【问题描述】:
我有这段代码可以验证一个输入文件,但我需要验证多个字段(因为用户可以根据需要添加尽可能多的“输入文件”),现在不知道如何验证。我一直在尝试使用循环,但没有任何结果(主要是因为即使我在 w3school 一遍又一遍地阅读它,我也不理解它们)。
https://jsfiddle.net/ElenaMcDowell/2xrqp6zg/2/
$( ".postreplyForm" ).submit(function( event ) {
var fileBox = $('.post-file').val(); //This is the Class of the input file
if (fileBox === '') {
//If there is no file
return;
} else {
//File format
var fileExtension = ['jpg', 'jpeg', 'png', 'mp3', 'mp4', 'pdf', 'pps', 'ppt', 'pptx', 'xls', 'doc', 'docx', 'txt'];
if ($.inArray($('.post-file').val().split('.').pop().toLowerCase(), fileExtension) == -1) {
$(".errorFile").html('<br><center><p class="signuperror">File format not allowed.</p></center><br>');
} else {
$(".errorFile").html(' ');
//File size
var fileSize = $('.post-file')[0].files[0].size;
if (fileSize > 1000000) {
$(".errorFile").html('<br><center><p class="signuperror">The file is too big.</p></center><br>');
} else {
$(".errorFile").html(' ');
return;
}
}
}
});
【问题讨论】:
-
如果可以有多个
.post-file,那么您需要遍历它,并单独处理每个。$('.post-file').each((index, file) => { ...do stuff... }); -
我尝试使用 each(),但随后验证一个正确的并提交表单,然后再验证另一个(我故意上传较重或格式错误以查看验证是否有效)。 :(
-
在循环之外,
var valid = true;如果在任何时候遇到错误,valid = false。完成循环后,if (!valid) event.preventDefault() -
抱歉,还是不行。 :(
标签: javascript jquery loops file input