Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 计数空文件上载控件_Javascript_Jquery_Html_Dom - Fatal编程技术网

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()
返回“集合中第一个元素的当前值”。