更好的方法来检查jquery中的某些输入类型文件是否为空?

Sna*_*yes 10 javascript jquery

我知道这是一个简单的问题,但我需要有经验的人的建议.

我有3个输入类型文件,如:

<input type="file" name="1-files" />
<input type="file" name="2-files" />
<input type="file" name="3-files" />
Run Code Online (Sandbox Code Playgroud)

我选择所有输入(在我的页面上我还有其他输入类型文件),其名称以"-files"结尾(我在谷歌Chrome控制台中写道):

$("input[type='file'][name*='-files']").length
Run Code Online (Sandbox Code Playgroud)

好.我使用1-files输入选择一个文件.之后,我在Google Chrome控制台中运行以下代码:

$("input[type='file'][name*='-files']:empty").length
Run Code Online (Sandbox Code Playgroud)

我希望会2出现3.

你能告诉我为什么吗 ?

我想获取输入类型文件的所有元素值为空.我在短时间内使用了选择器,:empty但似乎无法正常工作.

当然,我可以使用

var empty_count = 0;
$.each($("input[type='file'][name*='-files']"), function(k, v){
  if($(this).val() === '')
     empty_count++;
});
Run Code Online (Sandbox Code Playgroud)

但我想要最短的方式来做到这一点$.each.

谢谢

Dav*_*mas 10

这与3个,因为:empty比赛有没有后代的元素,并且是通过定义输入元素不能有后代(所以一切都是空的,因此本场比赛:empty选择).

要查找没有选定文件的元素,我建议:

$("input[type='file'][name*='-files']").filter(function (){
    return !this.value
}).length;
Run Code Online (Sandbox Code Playgroud)

参考文献: