【发布时间】:2019-11-03 14:27:41
【问题描述】:
我在一个表单上有 3 个输入文件。如果文件类型与 jpeg、gif、png、bmp 或 pdf 文件扩展名不匹配,或者文件大小大于 2mb,我想disable 提交。我有两个条件工作。
我的问题描述如下:用户提交带有 rar 的上传,提交被禁用,这有效。同样在下一个输入文件上,用户提交了一个大于 2mb 的文件,提交仍然被禁用,没关系。但是,当用户使用小于 2MB 的文件更改该文件时,提交已启用。但是,第一个输入(带有 rar 文件)没有更新。 它不会再次检查所有三个输入文件!!!
所以,我想以这样一种方式设置条件,即所有输入都必须良好才能启用提交,而不仅仅是其中一个。
我尝试使用if (x || y),但没有奏效。你可以看现场演示here。
function ValidateSize(file) {
var FileSize = file.files[0].size / 1024 / 1024; // in MB
var fileExtension = ['jpeg', 'jpg', 'png', 'gif', 'pdf', 'bmp'];
if (FileSize > 2) {
alert('El archivo excede los 2MB. Prueba a enviarlo con menor tamaño o no podrás enviar la solicitud.');
// $(file).val(''); //for clearing with Jquery
$("#submit").attr("disabled", true);
} else {
$("#submit").attr("disabled", false);
}
if ($.inArray($(file).val().split('.').pop().toLowerCase(), fileExtension) == -1) {
alert("Solo estos formatos son soportados");
$("#submit").attr("disabled", true);
}
}
<input name="cv-becario" class="ewd-otp-file-input" onchange="ValidateSize(this)" type="file" value="" required="">
<input name="certificado-de-notas-becario" class="ewd-otp-file-input" onchange="ValidateSize(this)" type="file" value="" required="">
<input name="titulo-becario" class="ewd-otp-file-input" onchange="ValidateSize(this)" type="file" value="" required="">
【问题讨论】:
-
首先,你可以使用
<input type="file" accept=".xls,.xlsx" /> -
@Dementic 这增加了改进的用户体验,我也会推荐它,但应该注意的是,这只是向操作系统提供建议,并不会阻止用户上传不被接受的文件。
-
@JohnPavek 同意了。另一方面,OP 试图完成的任务已经完成了十亿次,他最好不要重新发明轮子。
标签: javascript