如何获取不同复选框的值并计算那些选中复选框的值并显示在输入字段中?

时间:2013-07-29 07:47:17

标签: javascript jquery html

检查时,我在检查不同复选框的值时遇到了一些问题。这是我的代码

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.js"></script>
<script>
 $(document).ready(function(){
    $('input[type="checkbox"]').bind('click',function() 
    {
   var waterdm = $('#waterdm').val();
  $("#price").val(waterdm);
 });
});
</script>

<p><input type="checkbox" id="waterdm"  name="waterdm" value="10" />Water Damage</p>
<p><input type="checkbox" id="screendm" name="screendm" value="20" />Screen Damage</p>
<p><input type="checkbox" id="Chargerdm" name="Chargerdm" value="30" />Charger Damage</p>
<p><input type="checkbox" id="hdphdm" name="hdphdm" value="10" />Headphone Damage</p>

<p>
 Calculated Price: <input type="text" name="price" id="price" />
</p>

我想要的是每当用户签入复选框时我需要获取这些值并显示签入另一个输入框的每个复选框值的总和。这意味着我需要将每个复选框的值相加 检查。当用户取消选中任何复选框时,该值应从该总计中减去。我没有足够的jquery经验。请帮帮我。

5 个答案:

答案 0 :(得分:2)

你需要迭代cheboxes。当您用复选框进行交谈时,change事件会更有意义。

使用on附加事件而不是bind

$(document).ready(function () {
    // cache the inputs and bind the events
    var $inputs = $('input[type="checkbox"]')
    $inputs.on('change', function () {
        var sum = 0;
        $inputs.each(function() {
        // iterate and add it to sum only if checked
           if(this.checked)
               sum += parseInt(this.value);
        });
        $("#price").val(sum);
    });
});

<强> Check Fiddle

答案 1 :(得分:2)

 $(document).ready(function () {
     var waterdm = 0;
     $('input[type="checkbox"]').bind('click', function (e) {
         if (this.checked) {
             waterdm += eval(this.value);
         } else {
             waterdm -= eval(this.value);
         }

         $("#price").val(waterdm);
     });
 });

<强> Demo here

答案 2 :(得分:1)

试试这个

 $(document).ready(function(){
   var waterdm=0;  
   $('input[type="checkbox"]').on('click',function() 
    {
    waterdm = waterdm+parseInt($(this).val());
    $("#price").val(waterdm);
 });
});

Demo

答案 3 :(得分:1)

您可以使用以下代码

$(document).ready(function(){
    $('input[type="checkbox"]').click(function() 
    {
        var val = 0;
        $('input[type="checkbox"]:checked').each(function(){
            val+=parseInt($(this).val());
        });
          $("#price").val(val);
     });
});

Demo

答案 4 :(得分:0)

如果您要对所有选中的复选框求和,请尝试以下操作:

$('input[type="checkbox"]').bind('click',function() 
    {
        var sum = 0;
        $('input[type="checkbox"]:checked').each(function(){
           var val = parseInt($(this).val());
           sum += val;
        });
       $("#price").val(sum);
 });