根据IF语句添加变量不起作用?

时间:2015-12-10 03:47:31

标签: javascript jquery

我根据用户输入添加了几个变量。它有一个例外。用户可以选择使用现金或信用卡/卡付款。如果他们选择信用卡选项,则会增加$ .50的附加费。问题是我无法将附加费加到总金额上。

这是我的代码(我已删除其他选项并留下一个以减少代码。):

$(function() {

    var surcharge = parseFloat("0"),
                dsT = parseFloat("0");

    $('input[type=radio][name=CAT_Custom_1657686]').on('ifChecked', function(event){
        if (this.value == 'I will pay with cash at purchase pickup') {
             var surcharge = parseFloat("0");
             amountTotal();
        } else {
             var surcharge = parseFloat(".50");
             amountTotal();
        }
    });


    $("#CAT_Custom_1657649").change(function (){
        var ds = parseFloat("6.00");
           dsQ = $(this).val(),
           dsT = ds * parseFloat(dsQ);
           amountTotal();
    });


    function amountTotal() {
        var myTotal = surcharge + dsT;
        $("#Amount").val(myTotal);
        console.log(myTotal);
    } 


    $('input').iCheck({
        checkboxClass: 'icheckbox_square',
        radioClass: 'iradio_square',
        aria: true
    });

});

Here is a fiddle link显示问题的工作代码。

正如您将看到我正在使用iCheck来设置无线电输入的样式。我不相信这会导致问题。

如何解决此问题?

3 个答案:

答案 0 :(得分:3)

您再次在范围内定义变量。

在为变量赋值时,删除那些var个关键字。

这个

var surcharge = parseFloat("0");

应该替换为

surcharge = parseFloat("0");

和另一个相同。

答案 1 :(得分:1)

  

使用var将创建变量的新实例,因此它不会更改全局变量的值。 var surcharge会为附加费

创建新的local scope

Ty this:

if (this.value == 'I will pay with cash at purchase pickup') {
                     surcharge = parseFloat("0");
                     amountTotal();
                } else {
                     surcharge = parseFloat(".50");
                     amountTotal();
                }

Fiddle here

答案 2 :(得分:0)

问题是变量surchargeaddTotal的范围。

一个好的解决方案是在$(function() { var surcharge = parseFloat("0"), dsT = parseFloat("0"); $('input[type=radio][name=CAT_Custom_1657686]').on('ifChecked', amountTotal); $("#CAT_Custom_1657649").change(amountTotal); function amountTotal() { var ds = 6, dsQ = $("#CAT_Custom_1657649").val(), dsT = ds * parseFloat(dsQ), surcharge = $('input[type=radio][name=CAT_Custom_1657686]:checked').data('surchange'); var myTotal = surcharge + dsT; $("#Amount").val(myTotal); } //iCHECK PLUGIN $('input').iCheck({ checkboxClass: 'icheckbox_square', radioClass: 'iradio_square', aria: true }); });方法中找到它们的值,如

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://icheck.fronteed.com/icheck.js"></script>
<link href="http://icheck.fronteed.com/skins/all.css" rel="stylesheet" />
<label for="CAT_Custom_1657649">Daily Special</label>
<select name="CAT_Custom_1657649" id="CAT_Custom_1657649" class="cat_dropdown">
  <option value="0" selected>0</option>
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
</select>

<br>
<br>

<label>Payment</label>
<br>
<input name="CAT_Custom_1657686" id="CAT_Custom_1657686_0" value="I will pay with cash at purchase pickup" type="radio" data-surchange="0">&nbsp; I will pay with cash at purchase pickup
<br>
<input name="CAT_Custom_1657686" id="CAT_Custom_1657686_1" value="I will pay with credit/debit card immediately" type="radio" data-surchange="0.5">&nbsp; I will pay with credit/debit card immediately

<br>
<br>Amount:
<input type="text" name="Amount" id="Amount" class="purchase-amount" readonly />
CHARACTER SET utf8mb4