我有三个文件输入,如下所示,
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
一样工作。
答案 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();
}
});