Javascript 计数空文件上载控件
在动态生成的一组文件上载控件中:Javascript 计数空文件上载控件,javascript,jquery,html,dom,Javascript,Jquery,Html,Dom,在动态生成的一组文件上载控件中: <input type="file" name="archivos[]"> <input type="file" name="archivos[]"> <input type="file" name="archivos[]"> // ... $("input[type='file']") 但是,当我尝试计数空的(我实际需要的)时,选择器从不匹配任何内容: // Always zero var emptyCount = $(
<input type="file" name="archivos[]">
<input type="file" name="archivos[]">
<input type="file" name="archivos[]">
// ...
$("input[type='file']")
但是,当我尝试计数空的(我实际需要的)时,选择器从不匹配任何内容:
// 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;
我遗漏了什么?一种解决方案是检查迭代器中的值是否为空,如:
$(“#findEmpty”)。在(“单击”,函数(){
var计数=0;
$(“:file[name='archivos[]']”)。每个(函数(){
如果(this.value==“”){
计数++;
}
});
警报(计数);
});代码>
您可以通过以下方式过滤它们:
var emptyOne = $("input[type='file'][name='archivos[]']").filter(function () {
return $(this).val() == "";
});
$(函数(){
var emptyOne=$(“输入[type='file'][name='archivos[]']”)。过滤器(函数(){
返回$(this).val()==“”;
});
警报(清空一个长度);
});代码>
我没有解释(我会立即接受任何提供解释的答案),但根本原因似乎是使用通用属性等于选择器来查找控件:
<input type="file" name="archivos[]">
<input type="file" name="archivos[]">
<input type="file" name="archivos[]">
// ...
$("input[type='file']")
如果我使用,其他一切都会按预期工作:
$("input:file")
根据文件:
- 两个选择器的行为应该相同
[type='file']
的性能应该更好
。。。所以某个地方一定有个bug。好笑。。。重要的一点似乎是使用:file
而不是[type='file']
。通过这一小小的更改,我的原始代码似乎可以正常工作:-?不管怎样,.val()
返回“集合中第一个元素的当前值”。