统计非空输入字段[]?

9
使用jQuery如何计算数组field[]中有多少个字段不为空?
输入字段的示例:
<input type="file" name="arquivo[]" id="arquivo">

我试图使用map和get来创建一些东西,但进展不顺:
var total = 0;
var count = $('#arquivo[value!=""]').map(function() { total = total+1; }).get();

但无论我填写多少字段,它总是以1的值结束,如果没有填写任何字段,则为0。

2个回答

18
你可以直接找到jQuery对象的length属性,它会返回匹配元素的数量。
$('#arquivo[value!=""]').length

但您肯定知道这将始终返回01吗?id属性是唯一的,仅适用于一个元素,因此您不能多次重复使用它。


例如:

<div id="foo"></div>
<div id="foo"></div>

当你运行以下代码时:

$('#foo').length;
它返回 1,因为应该只存在一个具有foo ID的元素。

现在尝试这个:
<div class="foo"></div>
<div class="foo"></div>

当你运行以下命令时:

$('.foo').length;
它返回2。为什么?因为class可以多次重复使用。
你想做什么?能否发布一个包含多个输入字段的场景?

@Blender 只有你的和我的计数为1,而不是arquivo[]中的所有字段。 - Prix
我们会收到多达10张图片,其中前3张是必需的。 - Prix
您可能错误地使用了 id 属性。您能否发布带有10张图片的HTML代码? - Blender
@Blender arquivo[0],arquivo[1] ... arquivo[9] - Prix
1
好的。你不能有两个相同的 id 元素。最多只能有一个,这也是 jQuery 正确返回的结果。尝试使用 class 代替 id(请参见我的示例)。 - Blender
@Blender 谢谢,我已经将它从id改为class $('.arquivo[value!=""]').length;,现在计算得很好。 - Prix

3
如果您想按元素名称查询和计数,您可以使用以下代码。
$('[name*=arquivo][value!=""]').length

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接