Jquery多个复选框获取var中的值或以span打印

时间:2012-08-21 21:22:28

标签: jquery html checkbox

html的代码是:

<div id="container"><h1>Add-ons</h1>
<input type="checkbox" name="ch1" value="10" id="qr1" />Add-on Number 1 - 10 QR <br />
<input type="checkbox" name="ch1" value="20" id="qr1" />Add-on Number 2 - 20 QR <br />
<input type="checkbox" name="ch1" value="40" id="qr1" />Add-on Number 3 - 40 QR <br />
<input type="checkbox" name="ch1" value="60" id="qr1" />Add-on Number 4 - 60 QR <br />
</div>

<div> I want more add-ons
<select id="more" name="more">
    <option value="0 QR">0</option>
    <option value="30 QR">1</option>
    <option value="50 QR">2</option>
    <option value="100 QR">3</option>
</select>
<span id="span"></span>
 User total usage: <span id="usertotal"> </span>

Jquery的:

//For select          

      function displayVals() {
      var singleValues = $("#more").val();         
      $("#span").html("<b>more addons:</b> " + 
                  singleValues);
         }

    $("select").change(displayVals);
    displayVals();
//For  checkboxes
var $cbs = $('input[name="ch1"]');
$cbs.click(function() {
    var total = 0;
    $cbs.each(function() {
        if (this.checked)
            var singleValues = $("#more").val();
            total += +this.value + singleValues;
    });
    $("#usertotal").text(total);
});

我想要用户总使用量:创建复选框的总和并添加选项的值,这样如果我选择1复选框和2加选项1,我将写入用户总使用量:60。 提前谢谢你!

4 个答案:

答案 0 :(得分:3)

请注意,对多个元素使用相同的id是无效的html。使用其name属性选中复选框。单击任何复选框循环遍历所有,并添加任何已检查的值。请注意,值需要转换为数字,我使用一元加运算符。

var $cbs = $('input[name="ch1"]');

$cbs.click(function() {
    var total = 0;
    $cbs.each(function() {
        if (this.checked)
            total += +this.value;
    });
    $("#usertotal").text(total);
});​

演示:http://jsfiddle.net/6GX7g/

答案 1 :(得分:0)

try it:


$('input:checkbox').change(function(){ 
var tot=0;
$('input:checkbox:checked').each(function(){
tot+=parseInt($(this).val());
});
$('#usertotal').html(tot)
});

答案 2 :(得分:0)

工作演示: http://jsfiddle.net/GNDAG/

希望它有所帮助。您可以详细了解each here

但是,就像@nnnnnn提到的那样,你的html不对 - ID属性需要是唯一的。

代码

$('input[type="checkbox"]').change(function() {
   var total_span = 0;
    $('input[type="checkbox"]').each(function() {
        if ($(this).is(':checked')) {
            total_span += parseInt($(this).prop('value'), 10);
        }
    });

    $("#usertotal").html(total_span);
});​

答案 3 :(得分:0)

你去:

WORKING DEMO jsfiddle

HTML:

<div id="container"><h1>Add-ons</h1>
<input type="checkbox" class="numbers" name="ch1" value="10" id="qr1" />Add-on Number 1 - 10 QR <br />
<input type="checkbox" class="numbers" name="ch1" value="20" id="qr1" />Add-on Number 2 - 20 QR <br />
<input type="checkbox" class="numbers" name="ch1" value="40" id="qr1" />Add-on Number 3 - 40 QR <br />
<input type="checkbox" class="numbers" name="ch1" value="60" id="qr1" />Add-on Number 4 - 60 QR <br />
</div>
User total usage: <span id="usertotal"> </span>

的Jquery / JavaScript的:

  var getCheckedBoxValues = function() {
   var values = []
   $(".numbers:checked").each(function() {
       values.push($(this).val());
   });
   return values;
   };
    $('.numbers').click(function () {
   $('#usertotal').html();        
   var usertotal = 0;                
   var values = getCheckedBoxValues();
    for(i = 0; i < values.length; i++) {
        usertotal += parseInt(values[i]);
    }
    $('#usertotal').html(usertotal);
  });