Javascript 如果不满足该或该条件,则执行该操作

Javascript 如果不满足该或该条件,则执行该操作,javascript,Javascript,我在一个表单上有3个输入文件。如果文件类型与jpeg、gif、png、bmp或pdf文件扩展名不匹配,或者文件大小大于2mb,我想禁用提交。我有两种工作条件 我的问题描述如下:一个用户提交一个带有rar的上传,提交被禁用,这是有效的。同样在下一个输入文件中,用户提交了一个大于2mb的文件,提交仍然处于禁用状态,这没关系。但是,当用户使用小于2MB的文件更改该文件时,提交被启用。但是,第一个输入(带有rar文件)没有更新它不会再次检查所有三个输入文件 因此,我希望以这样一种方式设置条件,即所有输入

我在一个表单上有3个输入文件。如果文件类型与jpeg、gif、png、bmp或pdf文件扩展名不匹配,或者文件大小大于2mb,我想禁用提交。我有两种工作条件

我的问题描述如下:一个用户提交一个带有rar的上传,提交被禁用,这是有效的。同样在下一个输入文件中,用户提交了一个大于2mb的文件,提交仍然处于禁用状态,这没关系。但是,当用户使用小于2MB的文件更改该文件时,提交被启用。但是,第一个输入(带有rar文件)没有更新它不会再次检查所有三个输入文件

因此,我希望以这样一种方式设置条件,即所有输入都需要良好才能启用提交,而不仅仅是其中一个

我尝试了
if(x | | y)
,但没有成功。你可以看到一个现场演示

函数ValidateSize(文件){
var FileSize=file.files[0].size/1024/1024;//以MB为单位
var fileExtension=['jpeg','jpg','png','gif','pdf','bmp'];
如果(文件大小>2){
警报(“El archivo超过200亿美元。Prueba a envirarlo con menor tamaño no podrás envirar la clauud.”);
//$(file.val(“”);//用于使用Jquery进行清除
$(“#提交”).attr(“已禁用”,真);
}否则{
$(“#提交”).attr(“已禁用”,错误);
}
if($.inArray($(file.val().split('.').pop().toLowerCase(),文件扩展名)=-1){
警觉(“独奏的埃斯托斯·福塔托斯之子索波塔多斯”);
$(“#提交”).attr(“已禁用”,真);
}
}

在启用/禁用按钮之前,您需要检查所有选项的有效性

我将修改函数以接收元素并返回
true/false

然后,不要使用内联
onchange
而是使用jQuery事件侦听器并执行以下操作:

var$fileInputs=$('.ewd otp文件输入').change(函数(){
//筛选有效输入的集合
var$validInputs=$fileInputs.filter(函数(){
返回ValidateSize(此)
});
//如果长度匹配,则所有长度都有效
var isValid=$fileInputs.length===$validInputs.length;
//基于所有有效或无效的选项启用/禁用
$(“#提交”).prop(“已禁用”、!isValid);
});
//函数可能需要一些微调
函数ValidateSize(文件){
//如果空输入有效??
如果(!file.files.length){
返回true;
}
var FileSize=file.files[0].size/1024/1024;//以MB为单位
var fileExtension=['jpeg','jpg','png','gif','pdf','bmp'];
如果(文件大小>2){
console.log('超过2兆欧')
返回错误
}否则{
if($.inArray($(file.val().split('.').pop().toLowerCase(),文件扩展名)=-1){
日志(“Solo estos formatos son soportados”);
返回错误
}否则{
返回真值
}
}    
}






首先,您可以使用
@dementric这增加了一个改进的用户体验,我也建议您这样做,但需要注意的是,这只会向操作系统提供建议,不会阻止用户上传不被接受的文件。@johnpaek同意。另一方面,OP试图完成的任务已经完成了十亿次,他最好不要重新发明轮子。像OP中那样包含html代码的可运行演示会很好。@UdoE。您可以随意添加所需的额外html,并将其转换为代码片段。老实说,我不介意测试基本的UI代码以获得答案,但我对花时间调试具有各种文件类型的多个文件输入不感兴趣。我的答案是一个可靠的指南,可以通过OPI进行调整和扩展。在我试图生成自定义错误消息时,我在(“Mayor de 2MB.

”)之后插入了$(“.ewd otp file input”);if(FileSize>2){但它在所有3个输入上插入错误,而不仅仅是在以前上传的文件上,我如何才能只在以前上传的文件输入上插入消息?谢谢。在函数中使用
$(文件)。在('Mayor de 2MB.

');
..
$(文件)
$(“.ewd otp文件输入”)