逻辑运算符是jQuery

时间:2014-04-28 10:29:17

标签: 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" />

我已经使用以下jQuery函数在选中时自动上传3个文件,

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

但是这只适用于CFile选择,不检查是否选择了AFile和BFile。

逻辑上我希望它像A AND B AND C一样工作。

6 个答案:

答案 0 :(得分:4)

没有办法检测到所有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个变更时才会触发。

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

答案 1 :(得分:3)

尝试类似

的内容
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();
    }
});

答案 2 :(得分:1)

$("#AFile #BFile #CFile")

将是选择器中的AND运算符,表示选择包含所有3个ID的元素,即AFile AND BFile AND CFile

$("#AFile, #BFile, #CFile")

表示OR运算符,表示选择ID为AFile OR BFile CFile

的所有元素

HTML元素中的旁注应具有唯一且唯一的ID。 #AFile" && "#BFile" && "#CFile(表示具有id AFile AND BFile AND CFile的元素)在有效HTML世界中没有意义

如果您要选择ID为#AFile, #BFile#CFile的所有元素,那么您应该使用

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

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

试试这个:

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