我知道这是一个简单的问题,但需要有经验的人的建议.
我有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()
.