【问题标题】:How to subtract values of radio buttons如何减去单选按钮的值
【发布时间】:2014-11-15 20:39:54
【问题描述】:

如何使用 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>

【问题讨论】:

  • 为此使用减法运算符:-
  • 我已经尝试过了,它仍然添加了总数,但是我什至用 - 符号添加了这个总数 = parseInt(total) - parseInt(value);而且它不起作用
  • 请说,你的布局使用什么东西?
  • 我正在使用联系表 7,这是我的page,看看我在说什么
  • 阅读你的浏览器控制台,你使用match的空结果作为数组

标签: javascript jquery subtraction calculated-field


【解决方案1】:

您可能应该只添加总数:

<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());
    });
});

【讨论】:

    【解决方案2】:

    我认为您正在处理负数。

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

    您可能想在此处添加,然后将 150 折扣的价值设为-150,并将其添加到您的总数中。

    【讨论】:

    • 所以只需将 150 更改为 -150
    • 这是第二部分。主要的是:total = total - parseInt(value); 从总数中减去包装的价值(即 0)。将其更改为 total = total + parseInt(value); 然后将 150 更改为 -150 看看会发生什么。
    • 好的,现在我得到 NAN 的答案
    【解决方案3】:

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

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

    $('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));
    })
    <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">

    更新:

    【讨论】:

    • inputs is not defined。为什么不申报?
    • 并且没有价格属性...你应该添加一些东西,因为$-150 off 很丑......
    • 你可以简单地添加一个类discount并在sum之前检查(hasClass('discount'))和*-1
    • 像这样 [radio BPSUPQ id:BPSUPQ class:Discount "Yes *-1" "No"]
    • 我不能那样做,我永远不会得到他们输入的副本
    猜你喜欢
    • 2022-06-12
    • 1970-01-01
    • 2020-10-26
    • 1970-01-01
    • 2021-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多