jQuery中的复选框值计数?

时间:2014-01-13 05:47:05

标签: javascript jquery checkbox counting

这是我的代码,这里有6个复选框,它会调用6次,每次它都是两个值的总和,我传递的值就像它应该是10,10一样20,但会返回120, 我该如何解决这个问题?

jQuery('.pricefield input').each( function() {
  var checkedValues = jQuery('input:checkbox:checked').map(function() {
    str=this.value;
    source_str = str.substr(str.indexOf("#"));
    keywords = source_str.split (/[\D,]+/);
    val1=keywords[1];
    val2=keywords[2];
    sum+=parseInt(val1, 10)+parseInt(val2, 10);
    alert(sum);
    pricefield_both(sum);
  }).get();
});

2 个答案:

答案 0 :(得分:1)

您没有查看正确的索引,而您需要在#

之后再增加一个位置

Live Demo

$(function() {
  $('.pricefield input').on("click",function () {
    var sum=0;
    $('input:checkbox:checked').each(function () {
        var str=$(this).val().split("#")[1].split(",");
        sum += (parseInt(str[0], 10) + parseInt(str[1], 10));
    });
    pricefield_both(sum); // assuming that function works
  });
});    

答案 1 :(得分:-1)

keywords = source_str.split (/[\D,]+/);
val1=keywords[1];
val2=keywords[2];
sum+=parseInt(val1, 10)+parseInt(val2, 10);

这段代码不好!

尝试类似贝娄的事情!

keywords = source_str.split(/[\D,]+/);
val1 = +keywords[1];
val2 = +keywords[2];
sum += val1 + val2;

我建议你先定义变量,这样局部变量就不会全局访问!

var str, source_str, keywords, val1, val2, sum; 

结果如下:

var str, source_str, keywords, val1, val2, sum = 0;
jQuery('.pricefield input').each( function() {
  var checkedValues = jQuery('input:checkbox:checked').map(function() {
    str=this.value;
    source_str = str.substr(str.indexOf("#"));
    keywords = source_str.split (/[\D,]+/);
    val1 = +keywords[1];
    val2 = +keywords[2];
    sum += val1 + val2;
    alert(sum);
    pricefield_both(sum);
  }).get();
});