0

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>

查询:

//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

4 回答 4

3

请注意,对多个元素使用相同的 id 是无效的 html。使用名称属性选择复选框。单击任何复选框循环遍历它们,并添加任何选中的值。请注意,这些值需要转换为数字,我使用一元加号运算符来完成。

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/

于 2012-08-21T21:28:33.390 回答
0
try it:


$('input:checkbox').change(function(){ 
var tot=0;
$('input:checkbox:checked').each(function(){
tot+=parseInt($(this).val());
});
$('#usertotal').html(tot)
});
于 2012-08-21T21:28:35.013 回答
0

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

希望能帮助到你。each 您可以在此处阅读更多信息。

但是,就像@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);
});​
于 2012-08-21T21:31:30.943 回答
0

干得好:

工作演示 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);
  });
于 2012-08-21T21:55:37.993 回答