Javascript使用each()为复选框返回正确的值
Javascript return correct value for checkbox using each()
当用户点击复选框并进行一些计算时,我试图返回一些金额。但如果我尝试选中两个复选框,结果总是返回错误的值。
$('.type_checkbox input[type="checkbox"]').each(function (index) {
if ($(this).is(':checked')) {
checkbox_price_prefix = $(this).data('prefix-checkbox');
checkbox_price = checkbox_price_prefix + $(this).data('price-checkbox'); // <----- += or =
}
});
你可以试试这里
问题是,当用户尝试检查类型A和类型B时,结果假定为RM90
您不是在计算总数,而是在替换它。更改:
checkbox_price = checkbox_price_prefix + $(this).data('price-checkbox');
收件人:
checkbox_price += parseFloat(checkbox_price_prefix + $(this).data('price-checkbox'));
问题是在每次循环迭代中都覆盖变量的值。。。
var checkbox_price = 0;
$('.type_checkbox input[type="checkbox"]').each(function (index) {
if ($(this).is(':checked')) {
checkbox_price += parseInt($(this).data('prefix-checkbox') + $(this).data('price-checkbox'),10);
}
});
在每个的作用域之外声明变量,然后用选中收件箱的值增加其值,就可以随心所欲了。
通过一些jQuery选择器优化:
var checkbox_price = 0;
$('.type_checkbox input[type="checkbox"]:checked').each(function (index) {
checkbox_price += parseInt($(this).data('prefix-checkbox') + $(this).data('price-checkbox'),10);
});
这里有很多问题:
- 您正在覆盖总值,而不是将它们相加
- 不能通过串联字符串
-
和20
来获得值-20
您也不需要在每个循环中检查:checked
。只需将其包含在您的选择器中:
var optionCheckbox = function optionCheckbox() {
var totalAdjustment = 0;
$('.type_checkbox input[type="checkbox"]:checked').each(function () {
var prefix = $(this).data('prefix-checkbox');
var price = $(this).data('price-checkbox');
totalAdjustment += prefix === '-' ? -price : +price;
});
return totalAdjustment ;
};
您的问题在于计算函数
total = 100 + parseFloat(option_checkbox_return);
100必须声明为全局变量,并初始化为100
var x=100;
var optionCheckbox = function optionCheckbox() {
var checkbox_price_prefix;
var checkbox_price = 0;
// Loop Checkbox
$('.type_checkbox input[type="checkbox"]').each(function (index) {
if ($(this).is(':checked')) {
checkbox_price_prefix = $(this).data('prefix-checkbox');
checkbox_price = checkbox_price_prefix + $(this).data('price-checkbox');
}
});
return checkbox_price;
}
function calculateTotal() {
var option_checkbox_return = optionCheckbox();
total = x + parseFloat(option_checkbox_return);
x=total;
result = parseFloat(Math.round(total * 100) / 100).toFixed(2); // Convert to 2 decimal places
$('.price_placeholder').html('RM' + result);
}
$('.type_checkbox input[type="checkbox"]').on('click', function () {
calculateTotal();
});
相关文章:
- 使用jQuery只返回选中复选框后的第一个表单元格值
- 选择一个从 mysql 返回选中/未选中复选框的对象
- Yui Get 复选框返回数组而不是布尔值
- html5复选框返回“;关于“;值,而不是我设置的值
- Javascript使用each()为复选框返回正确的值
- 如果在jQuery中选中,则返回多个复选框值
- 当用户检索表单时返回选中的复选框(Coldfusion)
- 返回:使用is()选中复选框值
- 如何使复选框项目返回超链接
- 在jquery或javascript或angular中单击单选按钮或复选框后返回呼叫
- 在复选框的索引中返回 1
- HTML 复选框返回值
- HTML 复选框 Click() 使用 jQuery 返回 FALSE 或 TRUE,而不是 READONLY 或 DI
- 为什么复选框总是返回相同的值
- 复选框值始终返回 false
- Javascript - 从复选框返回值
- 复选框,并尝试在用户返回时为用户保存所有复选框的状态
- 如果从可能的复选框列表中只选中了一个特定的复选框,则返回 Javascript
- jquery和ajax.如何检索此字段的数据并返回到右侧复选框
- 输入复选框总是返回false