我根据用户输入添加了几个变量。它有一个例外。用户可以选择使用现金或信用卡/卡付款。如果他们选择信用卡选项,则会增加$ .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来设置无线电输入的样式。我不相信这会导致问题。
如何解决此问题?
答案 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();
}
答案 2 :(得分:0)
问题是变量surcharge
和addTotal
的范围。
一个好的解决方案是在$(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"> 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"> 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