简体   繁体   English

jquery 多个输入字段的总和,如果在一个输入中相同 class

[英]jquery sum of multiple input fields if same class in one input

Hello I need to sum the values of same class input in one input with class name total.您好,我需要将一个输入中相同 class 输入的值与 class 名称总和相加。

<input type="text" class="qty1" value="" />
<input type="text" class="qty1" value="" />
<input type="text" class="qty1" value="" />
<input type="text" class="qty1" value="" />
<input type="text" class="qty1" value="" />
<input type="text" class="qty1" value="" />

<input type="text" class="total" value="" />

Possible?可能的?

A working fiddle here这里有一个工作小提琴

$(document).on("change", "qty1", function() {
    var sum = 0;
    $("input[class *= 'qty1']").each(function(){
        sum += +$(this).val();
    });
    $(".total").val(sum);
});

You pretty much had it, just needed to adjust your JQuery a little bit for the appropriate selectors你几乎拥有它,只需要为适当的选择器稍微调整你的 JQuery

updated fiddle : http://jsfiddle.net/5gsBV/7/更新小提琴: http : //jsfiddle.net/5gsBV/7/

$(document).on("change", ".qty1", function() {
    var sum = 0;
    $(".qty1").each(function(){
        sum += +$(this).val();
    });
    $(".total").val(sum);
});

I suggest this solution:我建议这个解决方案:

html html

<input type="text" class="qty1" value="" />
    <input type="text" class="qty1" value="" />
    <input type="text" class="qty1" value="" />
    <input type="text" class="qty1" value="" />
    <input type="text" class="qty1" value="" />
    <input type="text" class="qty1" value="" />

    <input type="text" class="total" value="" />

<div id="result"></div>

js js

$(".qty1").on("blur", function(){
    var sum=0;
    $(".qty1").each(function(){
        if($(this).val() !== "")
          sum += parseInt($(this).val(), 10);   
    });

    $("#result").html(sum);
});

fiddle小提琴

I think your issue is here:我认为你的问题在这里:

$("#destination").val(sum);

change it to:将其更改为:

$(".total").val(sum);

And instead of change event i suggest you to use keyup instead.而不是change事件,我建议您改用keyup

$(document).on("keyup"

 $(document).on("keyup", ".qty1", function() { var sum = 0; $(".qty1").each(function(){ sum += +$(this).val(); }); $(".total").val(sum); });

We can use following own function我们可以使用以下自己的功能

 (function( $ ){
   $.fn.sum=function () {
    var sum=0;
        $(this).each(function(index, element){
            sum += parseFloat($(element).val());
        });
    return sum;
    }; 
})( jQuery );
//Call $('.abcd').sum();

http://www.gleegrid.com/code-snippet/javascript/jquery-sum-input-values-by-class/?filter=bygroup&group=JQuery http://www.gleegrid.com/code-snippet/javascript/jquery-sum-input-values-by-class/?filter=bygroup&group=JQuery

$('.qty1').each(function(){
  sum += parseFloat(this.value);
   });
console.log(sum);

This will work with pure js这将适用于纯 js

<input type="text" value=" " class="percent-input"> <br>
<input type="text" value=" " class="percent-input"> <br>
<input type="text" value=" " class="percent-input"> <br>
<p>Total Value :<span id="total">100%</span></p>
<p>Left Value :<span id="left">0.00%</span></p>
    var percenInput = document.querySelectorAll('.percent-input');
    for (let i = 0; i < percenInput.length; i++) {
        percenInput[i].addEventListener('keyup', getPercentVal)
    }

    function getPercentVal() {
        var total = 0;
        var allPercentVal = document.querySelectorAll('.percent-input');
        for (var i = 0; i < allPercentVal.length; i++) {
            if (allPercentVal[i].value > 0) {
                var ele = allPercentVal[i];
                total += parseFloat(ele.value);
            }
        }
        document.getElementById("total").innerHTML = total.toFixed(2) + '%';
        document.getElementById("left").innerHTML = (100 - total).toFixed(2) + '%';
    }

You almost had it:你几乎拥有它:

$(document).on("change", ".qty1", function() {
    var sum = 0;
    $(".qty1").each(function(){
        sum += +$(this).val();
    });
    $(".total").val(sum);
});

http://jsfiddle.net/DUKL6/ 1 http://jsfiddle.net/DUKL6/ 1

The problem with all of the above answers is that they fail if you enter something other than a number.上述所有答案的问题在于,如果您输入数字以外的内容,它们就会失败。 If you want something that is more friendly to users, you should do some validation, perhaps even give some feedback when a value other than a number is entered.如果你想要一些对用户更友好的东西,你应该做一些验证,甚至可能在输入一个数字以外的值时给出一些反馈。

$('body').on('change', '.qty1', function() {
    var total=0;
    $(".qty1").each(function(){
        quantity = parseInt($(this).val());
        if (!isNaN(quantity)) {
            total += quantity;
        }
    });
    $('.total').val('Total: '+total);
});
<input type="text" class="price" placeholder="enter number one" />
<input type="text" class="price" placeholder="enter number two" />
<input type="text" class="price" placeholder="enter number three" />
<input type="text" class="price" placeholder="enter number four" />
<input type="text" id="total">
<script>
$(document).ready( function() {
    $(document).on("keyup", ".price", function() {
        var sum = 0;
        $(".price").each(function(){
            sum += +$(this).val();
        });
        $('#total').val(sum);
    });
});
</script>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM