jQuery 至少分配了一个文件的文件输入选择器

jQuery Selector for file inputs with at least one file assigned

我有一个包含多个文件输入的页面。这些文件对于最终用户是可选的。我想 select 实际分配了文件的输入。我现在的代码类似于:

HTML

<input type="file" id="file1" value="File 1"/>
<input type="file" id="file2" value="File 2"/>
<input type="file" id="file3" value="File 3"/>

JS

$('input[type="file"]').each(function(){
  if(this.files.length > 0){
    //do something with this file
  }
});

这并不可怕,但我真的很想将“files.length>0”合并到 selector 本身中。我试过这个:

$('input[type="file"][value!=""]')

但它 selects 每个文件输入,无论是否分配文件。 select 仅分配文件输入的神奇词是什么?

您无法通过选择器

访问文件属性

each 之前使用 filter() 是一种选择。

$('input[type="file"]').filter(function(){
   return this.files && this.files.length;
}).each(function(){
 // do something with files
});