【问题标题】:Using jQuery to sum several input fields based on a partial match in name attribute使用 jQuery 根据名称属性中的部分匹配对多个输入字段求和
【发布时间】:2013-09-19 01:36:41
【问题描述】:

我有一个多行表,每行有 12 列(每月一列)。每行末尾都有一个“总计”字段。

每个输入字段都有一个系统名称,例如:

name="variable1_jan", name="variable1_feb"

等等。

我想通过部分匹配来引用这些字段(即所有名称包括“variable1_”的字段,并对所有字段求和,将结果总和放在总字段中,在 keyup 上(跨输入字段)。

表格行的截断示例:

<tr>
    <td>
        <input class="" title="jan" id="" name="r_inpatient_jan" value="" size="4" maxlength="4" />
    </td>
    <td>
        <input class="" title="feb" id="" name="r_inpatient_feb" value="" size="4" maxlength="4" />
    </td>
    <td>
        <input class="" title="tot" id="" name="r_inpatient_tot" value="" size="4" maxlength="4" />
    </td>
</tr>

我的目标:jQuery 将查找名称包含(在此示例中)“r_inpatient”的所有输入字段并将它们相加,然后将该值放入“r_inpatient_tot”。这在 jQuery 中可能吗?

【问题讨论】:

    标签: jquery html-table


    【解决方案1】:

    当然,这应该可以:

    $("input[name^=r_inpatient]").keyup(function() {
        var sum = 0;
        $("input[name^=r_inpatient]").not("input[name=r_inpatient_tot]").each(function() {
            var number = parseInt(this.value) || 0;
            sum += number
        });
        $("input[name=r_inpatient_tot]").val(sum);
    });
    

    演示:http://jsfiddle.net/x2BE3/

    【讨论】:

      【解决方案2】:

      DEMO

      $("input[name^=r_inpatient]").keyup(function () {
          var sum = 0;
          $("input[name^=r_inpatient]").not("input[name=r_inpatient_tot]").each(function () {
              sum += (parseInt(this.value) ? parseInt(this.value) : 0);
          });
          $("input[name=r_inpatient_tot]").val(sum);
      });
      

      参考文献

      attribute-starts-with-selector

      .not()

      .keyup()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-26
        • 2015-09-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多