首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从复选框数据库中更新总计

从复选框数据库中更新总计
EN

Stack Overflow用户
提问于 2014-07-01 09:29:48
回答 2查看 404关注 0票数 0

我有代码可以正确地将值加起来,每个复选框都有一个数据属性值,我想根据勾选的复选框来更新总数。

目前,它只是在1字符串中显示值,而不是计算新的总计。

视图

代码语言:javascript
复制
<input type="checkbox" onchange="checkTotal()" checked id="product-1" data-product-price="19.85">
<input type="checkbox" onchange="checkTotal()" checked id="product-2" data-product-price="17.25">
<input type="checkbox" onchange="checkTotal()" checked id="product-3" data-product-price="18.65">
<input type="checkbox" onchange="checkTotal()" checked id="product-4" data-product-price="16.35">

JS

代码语言:javascript
复制
$(document).ready(function () {
    $('#prod1').val(true);
    $('#prod2').val(true);
    $('#prod3').val(true);
    $('#prod4').val(true);
});

function checkTotal() {
    var checks = $("input[id*='product-']");
    var tot = "68.95";
    checks.each(function () {
        var checkbox = this;
        if (checkbox.checked) {
            tot += $(this).data("product-price");
            console.log($(this).data("product-price"));
            if (checkbox.id == 'product-1') {
                $('#prod1').val(true);
            }
            if (checkbox.id == 'product-2') {
                $('#prod2').val(true);
            }
            if (checkbox.id == 'product-3') {
                $('#prod3').val(true);
            }
            if (checkbox.id == 'product-4') {
                $('#prod4').val(true);
            }
        }
        if (!checkbox.checked) {
            if (checkbox.id == 'product-1') {
                $('#prod1').val(false);
            }
            if (checkbox.id == 'product-2') {
                $('#prod2').val(false);
            }
            if (checkbox.id == 'product-3') {
                $('#prod3').val(false);
            }
            if (checkbox.id == 'product-4') {
                $('#prod4').val(false);
            }
        }
    });

    var totalSpan = $('#totalAmount');
    totalSpan.text(tot);
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-01 09:35:13

为了得到总价格,循环通过每个选中的复选框并添加数据值.您可以使用:selected只获取选定的复选框。

代码语言:javascript
复制
$("input[type='checkbox']").change(function () {
    var tot = 0;
    $("input[type='checkbox']:checked").each(function () {
        tot += $(this).data("product-price");
    });
    var number = this.id.split("-")[1];
    $('#prod' + number).val(this.checked);
    var totalSpan = $('#totalAmount');
    totalSpan.text(tot);
});

Fiddle

请注意,您不必为复选框的change事件编写内联代码。您可以将它绑定到jquery。

票数 1
EN

Stack Overflow用户

发布于 2014-07-01 10:29:49

用jQuery库试试这个!首先,如果选中该复选框并将其存储在数组中,我将得到data-product-price的值,然后简单地将数组的所有值添加到下面的循环检查中,如果您不理解,只需在此注释:)您的HTML:

代码语言:javascript
复制
<input type="checkbox" checked id="product-1" data-product-price="19.85">
<input type="checkbox" checked id="product-2" data-product-price="17.25">
<input type="checkbox" checked id="product-3" data-product-price="18.65">
<input type="checkbox" checked id="product-4" data-product-price="16.35">
<br>Total<input type = "text" name = "total" id = "total">

你的JS

代码语言:javascript
复制
$( document ).ready(function() {
    checkTotal();

    $('input[type="checkbox"]').on("click", function(){
        checkTotal();
    });
});

function checkTotal(){
    var selected = [];
    var total = 0;
    $('input[type="checkbox"]:checked').each(function() {
        selected.push($(this).attr('data-product-price'));
    });

    for( var x = 0; x < selected.length; x++ ){
        total += selected[x] * 1;
    }

   $("#total").val(total);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24506850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档