将所有文本输入值添加到一个总数量框中

时间:2013-07-19 05:22:42

标签: javascript jquery

我正在尝试做一些看起来很简单的事情,但我无法让它发挥作用。我仍然是Java的新手,但我对学习更感兴趣,而不是付钱给别人为我做这件事。所以任何帮助和指导都会非常感激。

我有一个产品表单

我设置了数量金额的选项。 (小,中,大,XL)

我需要的只是底部的主数量框根据用户在前一个输入的内容更新它的值。

我已经尝试根据我读过的其他帖子编写一个简单的脚本

$("input.Qty").keyup(function(){
  sumValues();
});

function sumValues() {
    var sum = 0;

    $("input.Qty").each(function(){
        var $this = $(this);
        var amount = parseInt($this.val(), 1);
        sum += amount === "" || isNaN(amount)? 0 : amount;
    });

    $("#qtybox").text(sum);
}

$(function() {

  sumValues();

});

根据我读过的所有内容,似乎使用keyup方法是最简单的方法。任何想法或想法?

2 个答案:

答案 0 :(得分:3)

parseInt($this.val(), 1);
                      ^---- You are using the wrong radix

应该是

parseInt($this.val(), 10);

另一个问题可能是您在DOM就绪处理程序之外绑定事件。 因此,在事件受到约束时,元素可能仍然不可用。尝试移到DOM ready handler

<强> Check Fiddle

$(function () {
    $("input.Qty").keyup(function () {
        sumValues();
    }).keyup();
});

function sumValues() {
    var sum = 0;

    $("input.Qty").each(function () {
        var $this = $(this);
        var amount = parseInt($this.val(), 10);
        sum += amount === "" || isNaN(amount) ? 0 : amount;
    });

    $("#qtybox").text(sum);
}

答案 1 :(得分:0)

function sumValues() {
    var sum = 0;

    $("input.Qty").each(function() {
        sum += parseInt(this.value, 10);
    });

    $("#qtybox").text(sum);
}

$(function() {
    $("input.Qty").on('keyup', sumValues).trigger('keyup');
});