逻辑运算符是jQuery

逻辑运算符是jQuery,jquery,logical-operators,Jquery,Logical Operators,我有三个文件输入,如下所示 A File : <input type="file" name="AFile" id="AFile" /> B File: <input type="file" name="BFile" id="BFile" /> C File : <input type="file" name="CFile" id="CFile" /> 但这只适用于文件选择,不检查是否选择了文件和文件 从逻辑上讲,我希望它像A和B以及C那样工作您可以使用逗号

我有三个文件输入,如下所示

A File : <input type="file" name="AFile" id="AFile" />
B File: <input type="file" name="BFile" id="BFile" />
C File : <input type="file" name="CFile" id="CFile" />
但这只适用于文件选择,不检查是否选择了文件和文件


从逻辑上讲,我希望它像
A和B以及C那样工作
您可以使用逗号
来分隔多个选择器:

$("#AFile,#BFile,#CFile").change(function() { 
    document.getElementById("UploadFile").submit();
}); 

您可以使用逗号
分隔多个选择器:

$("#AFile,#BFile,#CFile").change(function() { 
    document.getElementById("UploadFile").submit();
}); 
将是选择器中的和运算符,这意味着选择具有所有3个ID的元素,即
a文件

$("#AFile, #BFile, #CFile")
平均值或运算符,表示选择id为
a文件或
b文件或
b文件的所有元素

HTML元素中的一个旁注应该有一个唯一的id。
#AFile“&&&&&“BFile”&&&“CFile”
(这意味着具有id AFile、BFile和CFile的元素)在有效的HTML世界中没有意义

如果要选择id为
#AFile、#BFile
#CFile
的所有元素,则应使用

$("#AFile, #BFile, #CFile).change(function() { 
   document.getElementById("UploadFile").submit();
});
将是选择器中的和运算符,这意味着选择具有所有3个ID的元素,即
a文件

$("#AFile, #BFile, #CFile")
平均值或运算符,表示选择id为
a文件或
b文件或
b文件的所有元素

HTML元素中的一个旁注应该有一个唯一的id。
#AFile“&&&&&“BFile”&&&“CFile”
(这意味着具有id AFile、BFile和CFile的元素)在有效的HTML世界中没有意义

如果要选择id为
#AFile、#BFile
#CFile
的所有元素,则应使用

$("#AFile, #BFile, #CFile).change(function() { 
   document.getElementById("UploadFile").submit();
});
试试像这样的东西

var files = $("#AFile,#BFile,#CFile").change(function () {
    var count = files.filter(function () {
        return this.value.length
    }).length;
    if (count == files.length) {
        document.getElementById("UploadFile").submit();
    }
});
试试像这样的东西

var files = $("#AFile,#BFile,#CFile").change(function () {
    var count = files.filter(function () {
        return this.value.length
    }).length;
    if (count == files.length) {
        document.getElementById("UploadFile").submit();
    }
});

没有办法检测到所有3个都已更改。更改选择器不会添加该功能,因此您必须自己添加。这应该可以解决问题

var files = {
    AFile: false,
    BFile: false,
    CFile: false
};

$("#AFile, #BFile, #CFile").on("change", function() {
    files[this.id] = !!this.value.length;
    for (var i in files) {
        if (!files[i]) return;
    }
    // they have all changed - do something here
});
当每一个输入发生变化时,它都会进行标记,您可以在函数末尾添加所需的任何代码,并且只有当所有3个输入都发生变化时,它才会触发


我将循环放入以检查
文件
,以便您可以轻松地扩展它,以便在需要时添加更多文件输入。

无法检测所有3个文件都已更改。更改选择器不会添加该功能,因此您必须自己添加。这应该可以解决问题

var files = {
    AFile: false,
    BFile: false,
    CFile: false
};

$("#AFile, #BFile, #CFile").on("change", function() {
    files[this.id] = !!this.value.length;
    for (var i in files) {
        if (!files[i]) return;
    }
    // they have all changed - do something here
});
当每一个输入发生变化时,它都会进行标记,您可以在函数末尾添加所需的任何代码,并且只有当所有3个输入都发生变化时,它才会触发

我将循环放入以检查
文件
,以便您可以轻松扩展它,以便在需要时添加更多文件输入。

尝试以下操作:

$("#AFile , #BFile , #CFile").change(function() { 
   var $this = $(this);
   $this.addClass('changed');
   if($this.each(function(){
      return this.className == 'changed';
   }){
      document.getElementById("UploadFile").submit();
  }
}); 
试试这个:

$("#AFile , #BFile , #CFile").change(function() { 
   var $this = $(this);
   $this.addClass('changed');
   if($this.each(function(){
      return this.className == 'changed';
   }){
      document.getElementById("UploadFile").submit();
  }
}); 

它的行为就像一种疾病或状况。。不是一个ANDI,它的行为类似于一个ANDI或条件。。不是AND,你应该为所有输入使用公共类你应该为所有输入使用公共类我已经尝试过
$(“#AFile#BFile#CFile”)
,但是表单没有提交。@Zedai我想你需要OR运算符,所以你应该使用
$(“#AFile,#BFile,#CFile”)
我需要ANDoperator@Zedai
$(“#AFile,#BFile,#CFile”)
将选择id为
a文件
b文件
c文件
的所有元素。运算符意味着一个元素应该有所有3个ID
a文件
b文件
c文件
,我已经实现了,运算符如您所说,但什么也没有发生。我正在尝试使用AND运算符。我尝试了
$(“#AFile#BFile#CFile”)
,但表单没有提交。@Zedai我想你需要OR运算符,所以你应该使用
$(“#AFile,#BFile,#CFile”)
我需要ANDoperator@Zedai
$(“#AFile,#BFile,#CFile”)
将选择id为
AFile
的所有元素,
b文件
c文件
。运算符意味着一个元素应该有所有3个ID
a文件
b文件
c文件
,我已经实现了,运算符如您所说,但什么也没有发生。我正在尝试和运算符。不确定,但只是以防万一,我会使用:
文件[this.id]=!!这个.value.length好电话,@A.Wolff。现在,它可以处理用户通过“取消”按钮清除输入的问题。谢谢:)不确定,但以防万一,我会使用:
files[this.id]=!!这个.value.length好电话,@A.Wolff。现在,它可以处理用户通过“取消”按钮清除输入的问题。谢谢:)真棒的回答!谢谢,回答得真棒!非常感谢。