使用keyup事件求和字段值

时间:2015-05-05 07:03:20

标签: jquery

我想使用jquery计算每列的总和。 HTML:

<table id="tab"width="300px" border="1" >
<tbody><tr>
    <td width="40px">1</td>
    <td>Butter</td>
    <td><input class="txt" type="text" name="txt"></td>
        <td><input class="txt" type="text" name="txt"></td>
</tr>
<tr>
    <td>2</td>
    <td>Cheese</td>
    <td><input class="txt" type="text" name="txt"></td>
         <td><input class="txt" type="text" name="txt"></td>
</tr>
<tr>
    <td>3</td>
    <td>Eggs</td>
    <td><input class="txt" type="text" name="txt"></td>
         <td><input class="txt" type="text" name="txt"></td>
</tr>
<tr>
    <td>4</td>
    <td>Milk</td>
    <td><input class="txt" type="text" name="txt"></td>
         <td><input class="txt" type="text" name="txt"></td>
</tr>

<tr id="summation">

    <td colspan="2"align="right">Sum :</td>
    <td><input class="sum" type="text" name="txt"></td>
        <td><input class="sum" type="text" name="txt"></td>
</tr>
     </tbody></table>

这里我想添加每列的值(使用keyup函数)并显示在最后一行。

小提琴: http://jsfiddle.net/5tgbxy31/2/

3 个答案:

答案 0 :(得分:2)

更改

$("#sum").html(sum.toFixed(2));

$("#sum").val(sum.toFixed(2));

因为如果我们想填充输入,jquery的val()不是html()html()用于跨度。

在if {)中再添加一个&& this.id!="sum"条件, 因此它不会在计算中取总和值。 好

答案 1 :(得分:1)

使用.val()代替.html()输入,并尝试以下代码

var sum = 0;
$("#tab input").keyup(function(){
    sum += parseFloat(this.value);
    $("#sum").val(sum.toFixed(2));
});

Fiddle

答案 2 :(得分:1)

撰写.val()代替.html(),并在代码中进行一些细微更改:

$(document).ready(function()
                  {
                      $("#tab").find("input").each(function(){
                          $(this).keyup(function(){
                              //alert("here")
                              calculateSum();
                          });
                      });
                  });
function calculateSum()
{
    var sum=0;
    $("#tab tr").not("tr:last").each(function(){
      $(this).find('input[type="text"]').each(function()  {
        if(!isNaN(this.value)&&this.value.length!=0)
        {
          sum+=parseInt(this.value);
        }
      });      
    });  
    $("#sum").val(sum.toFixed(2));    
}

DEMO