我知道这是一个简单的问题,但需要有经验的人的建议.
我有3个输入类型的文件,如:
<input type="file" name="1-files" /> <input type="file" name="2-files" /> <input type="file" name="3-files" />
我选择所有输入(在我的页面上我也有其他输入类型的文件)哪个名称以“-files”结尾(我在Google Chrome控制台中写道):
$("input[type='file'][name*='-files']").length
好.我选择一个文件使用1文件输入.之后,我在Google Chrome控制台中运行以下代码:
$("input[type='file'][name*='-files']:empty").length
我希望是2,但出现3.
你能告诉我为什么吗 ?
我想获取输入类型文件的所有元素哪些值是空的.我用简短的方式选择器:空,但似乎不能正常工作.
当然可以用
var empty_count = 0; $.each($("input[type='file'][name*='-files']"),function(k,v){ if($(this).val() === '') empty_count++; });
但是,我想要最短的方式来做这个没有$.
谢谢
解决方法
它匹配三个,因为:空匹配一个没有后代的元素,并且根据定义的输入元素不能有后代(因此都是空的,因此匹配:空选择器).
要找到没有选定文件的元素,我建议:
$("input[type='file'][name*='-files']").filter(function (){ return !this.value }).length;
参考文献:
> :empty
selector.
> filter()
.