2011-04-14 33 views
0

HTML代码:如何捕捉onchange事件在多个文本字段

<input type="text" name="percentage[]" value="1"/> 
<input type="text" name="percentage[]" value="2"/> 
<input type="text" name="percentage[]" value="3"/> 

我希望能够通过使用jQuery来赶上变化的事件,当任何一个“比例”的文本字段的变化,发现所有这些总和领域。所以,如果第一个字段的值从1变为5,我希望能够显示“10”。

+1

可能重复:http://stackoverflow.com/questions/805963/how-do-i-bind-onchange-event-of-a-textbox -using-jquery/805976#805976 – reggie 2011-04-14 19:00:35

回答

1

您也可以使用这样的事情:

$("input[type='text'][name^='percentage']").keyup(function(){ 
    alert(sumThemUp()); 
}); 

function sumThemUp(){ 
    var sum = 0; 
    $("input[type='text'][name^='percentage']").each(function(){ 
     sum+= parseInt($(this).val()); 
    }); 
    return sum; 
}; 

jsfiddle工作的例子。

你也可以检查jQuery API来选择可能更适合你的选择器,如果你愿意。有许多变化,如!=,〜=,* =等。

+0

谢谢。这工作。但是当我试图通过$('input [name = percentage]')实现时,它不起作用。我不能使用名称属性而不是文本属性?如果我有不同名称的其他文本字段,但我只想总结百分比字段? – balistik 2011-04-14 19:24:25

+0

Opps!我刚看到你的答案。 – balistik 2011-04-14 19:25:21

+0

我修改了我的答案..正确的选择器是'$(“input [type ='text'] [name^='percentage']”)''。这将匹配所有文本输入与名称以字百分比开始。更简单的方法是添加自定义CSS类,然后确定该类的元素。 – Damb 2011-04-14 19:27:10

1

假设你有一个新元素,表现出的总和,并没有其他投入要素,这将工作:

$("input[type=text]").change(function() { 
     // Clear the sum 
     $("#sum").text("0"); 

     // Sum the values 
     $("input[type=text]").each(function() { 
       $("#sum").text(parseInt($("#sum").text()) + parseInt($(this).val())) 
      }); 
    }); 

它惹人要素发生变化,然后遍历所有这些,总结起来。

+0

谢谢!其实,还有其他输入字段(如复选框)。那么我如何区别于其他输入字段呢? – balistik 2011-04-14 19:07:10