如何减去单选按钮的值

时间:2014-11-15 20:39:54

标签: javascript jquery subtraction calculated-field

如何使用JavaScript计算一组单选按钮? 它现在的工作原理是加总。但我希望减去$ 150.00。

这就是我现在正在做的事情,我得到了$ Nan

<p>Baby Plan<br />
    [radio BPSUBPT id:BPSUBPT class:radio-vertical "Baby Plan $300.00 3 Sessions" "Baby Plan $500.00 4 Sessions"] </p>

<p>Did you have a Newborn session With ADP? <br />
[radio BPSUPQ id:BPSUPQ class:radio-vertical "Yes$ -150 off" "No"]


<p>Baby Plan Totals: <br />
Baby Plan Price: [text BPSUBPP 28/28 id:BPSUBPP]
Discount Amount: [text BPSUDA 8/8 id:BPSUDA]

Total Price: <span id="total"></span



<script>
        $(document).ready(function() {
      var inputs = $('input[name="BPSUBPT"], input[name="BPSUPQ"]');
            $(inputs).click(function() {
                var total = 0;
                $(inputs).filter(':checked').each(function() {
                    var value = ($(this).val()).match(/\$([0-9]*)/)[1];
                    total = (parseInt(total) - parseInt(value)) 
                })
               $('#total').html('$' + total);
            });
            $('input[name="BPSUBPT"]').click(function() {
                $(this).blur();
                $('#BPSUBPP').val($(this).val());
            })
            $('input[name="BPSUPQ"]').click(function() {
                $(this).blur();
                $('#BPSUDA').val($(this).val());
       });
        });
    </script>

3 个答案:

答案 0 :(得分:2)

你应该只是添加总数:

<p>Baby Plan<br />
[radio BPSUBPT id:BPSUBPT class:radio-vertical "Baby Plan $300.00 3 Sessions" "Baby Plan $500.00 4 Sessions"] </p>

<p>Did you have a Newborn session With ADP? <br />
[radio BPSUPQ id:BPSUPQ class:radio-vertical "Yes $-150 off" "No"]
<!-- beware here because I changed "Yes$ -150" to "$-150" -->

<p>Baby Plan Totals: <br />
Baby Plan Price: [text BPSUBPP 28/28 id:BPSUBPP]
Discount Amount: [text BPSUDA 8/8 id:BPSUDA]

Total Price: <span id="total"></span

的jQuery

$(document).ready(function() {
    var inputs = $('input[name="BPSUBPT"], input[name="BPSUPQ"]');
    $(inputs).click(function() {
        var total = 0;
        $(inputs).filter(':checked').each(function() {
            // Now including the - sign
            var value = ($(this).val()).match(/\$(-?[0-9]*)/)[1];
            if (value) {
                // I'm now ADDing the total
                // total = total + parseInt(value);
                total += parseInt(value);
            }
        });
        $('#total').html('$' + total);
    });
    $('input[name="BPSUBPT"]').click(function() {
        $(this).blur();
        $('#BPSUBPP').val($(this).val());
    });
    $('input[name="BPSUPQ"]').click(function() {
        $(this).blur();
        $('#BPSUDA').val($(this).val());
    });
});

答案 1 :(得分:1)

我认为发生的事情是你正在使用负数。

执行total = total - parseInt(value);时,您将减去由单选按钮确定的值0.(var total = 0;)。 所以你的总数实际上是一个负数。

您可能想要在那里添加,然后设置150折扣-150的值,并将其添加到您的总数中。

答案 2 :(得分:0)

不要使用总计的递减/递增,每次计算正确的总数。

为每个有价值的输入(价格或折扣)添加属性cost并且:
试试这个:

&#13;
&#13;
$('input').click(function(){
   var total = 0;
   $('input').filter(':checked').each(function(){
      var cost = $(this).attr('cost');
      cost = cost ? parseFloat(cost) : 0;
      console.log(cost);
      total += cost;
   });
   $('#total').text('$'+Math.max(total, 0));
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input cost="300" type="radio" name="BPSUBPT" value="Baby Plan $300.00 3 Sessions"> Baby Plan $300.00 3 Sessions<br/>
<input cost="500" type="radio" name="BPSUBPT" value="Baby Plan $500.00 3 Sessions"> Baby Plan $500.00 3 Sessions<br/>

<input cost="-150" type="radio" name="BPSUPQ" value="Yes $150.00 off" />
Apply Discount?<br/>
<input cost="0" type="radio" name="BPSUPQ" value="No" />No<br/>

<div id="total">
&#13;
&#13;
&#13;

更新