【问题标题】:Count non-empty input field[]?计算非空输入字段[]?
【发布时间】:2011-08-29 09:49:21
【问题描述】:

使用 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。

【问题讨论】:

    标签: jquery count field validation


    【解决方案1】:

    你可以找到jQuery对象的length,它返回匹配元素的数量:

    $('#arquivo[value!=""]').length
    

    但你知道这将总是返回01id 属性唯一对一个元素来说是唯一的,所以你不能多次重复使用它。


    例如:

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

    当你运行时:

    $('#foo').length;
    

    它返回1,因为只有一个元素应该fooid存在。


    现在试试这个:

    <div class="foo"></div>
    <div class="foo"></div>
    

    当你运行时:

    $('.foo').length;
    

    它返回2。为什么?因为class可以多次重复使用。


    你想做什么?你能发布一个包含多个输入字段的场景吗?

    【讨论】:

    • @Blender 你的和我的只计算 1 而不是来自arquivo[]的所有字段
    • 我们收到多张图片,最多 10 张,前 3 张是必需的。
    • 您可能错误地使用了id 属性。你能发布包含 10 张图片的 HTML 吗?
    • @Blender arquivo[0], arquivo[1] ... arquivo[9]
    • 好的。您不能有两个具有相同id 的元素。曾经。最大值是 1,这是 jQuery 正确返回的值。尝试使用class 而不是id(参见我的示例)。
    【解决方案2】:

    如果您喜欢按元素名称查询和计数。您可以使用以下代码

    $('[name*=arquivo][value!=""]').length
    

    【讨论】:

      猜你喜欢
      • 2014-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多