在动态生成的文件上传控件集中:
<input type="file" name="archivos[]">
<input type="file" name="archivos[]">
<input type="file" name="archivos[]">
// ...
......我很容易计算非空的:
// Works fine
var nonEmptyCount = $("input[type='file'][name='archivos[]'][value!='']").length;
然而,当我尝试计算空(我实际需要的)时,选择器永远不会匹配任何东西:
// Always zero
var emptyCount = $("input[type='file'][name='archivos[]'][value='']").length;
我无法相信我需要这些繁琐的代码:
// Works but ugly
var emptyCount = $("input[type='file'][name='archivos[]']").length -
$("input[type='file'][name='archivos[]'][value!='']").length;
我错过了什么?
答案 0 :(得分:2)
一种解决方案是检查迭代器中的值是否为空,如:
$("#findEmpty").on("click", function() {
var count = 0;
$(":file[name='archivos[]']").each(function() {
if (this.value == "") {
count++;
}
});
alert(count);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="file" name="archivos[]" />
<input type="file" name="archivos[]" />
<input type="file" name="archivos[]" />
<input type="file" name="archivos[]" />
<input type="file" name="archivos[]" />
<input type="file" name="archivos[]" />
<input type='button' value='Check Empty' id='findEmpty' />
&#13;
答案 1 :(得分:0)
您可以这样过滤它们:
var emptyOne = $("input[type='file'][name='archivos[]']").filter(function () {
return $(this).val() == "";
});
$(function () {
var emptyOne = $("input[type='file'][name='archivos[]']").filter(function () {
return $(this).val() == "";
});
alert(emptyOne.length);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<input type="file" name="archivos[]">
<input type="file" name="archivos[]">
<input type="file" name="archivos[]">
&#13;
答案 2 :(得分:0)
我没有解释(我会立即接受任何提供答案的答案),但根本原因似乎是使用通用属性equals selector 来查找控件:
$("input[type='file']")
如果我使用jQuery extension short-cut,其他一切都按预期工作:
$("input:file")
根据文档:
[type='file']
应该效果更好...所以某处肯定有错误。