Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery中keyup函数的动态增值_Javascript_Jquery - Fatal编程技术网

Javascript jQuery中keyup函数的动态增值

Javascript jQuery中keyup函数的动态增值,javascript,jquery,Javascript,Jquery,检查我的小提琴。我有不同的id和类,我想动态地添加值。当设置键时,我想在total字段中动态地添加值 我有三个id为InvQty1、InvQty2和InvQty3的输入,还有一个id为Total $(document).ready(function(){ $('.InvQty').keyup(function(){ var val2 = parseInt($('#InvQty1').val())+parseInt($('#InvQty2').val());

检查我的
小提琴
。我有不同的id和类,我想动态地添加值。当设置键时,我想在total字段中动态地添加值

我有三个id为
InvQty1
InvQty2
InvQty3
的输入,还有一个id为
Total

$(document).ready(function(){
    $('.InvQty').keyup(function(){

       var val2 =  parseInt($('#InvQty1').val())+parseInt($('#InvQty2').val());
        
        $('#Total').val(val2);
    });
});

非常感谢您的帮助

这里有一个解决方案。设置函数,然后在每次键控时,它都会使用InvQty类获取每个元素,然后获取其值并将其添加到总数中。然后在总输入中设置它

  $('.InvQty').keyup(function(){
        
       var total = 0;
        $('.InvQty').each( function(){
           total += parseFloat($(this).val());
        });
        $('#Total').val(total);
    });
如果您添加了更多带有InvQty类的输入,也可以这样做。


编辑:按照myfunkyside的建议放置parseFloat

尝试以下操作:在
keyup
上,迭代所有
InvQty
输入,并对值求和以将其相加。使用
parseFloat()
避免
NaN

$(document).ready(function(){
    $('.InvQty').keyup(function(){

       var val2 = 0;
        $('.InvQty').each(function(){
            val2+=(parseFloat($(this).val()) || 0);
        });
        $('#Total').val(val2);
    });
});

试试下面的代码

$(document).ready(function(){

    $('.InvQty').keyup(function(){
       var res = 0 ; 
        $(".InvQty").each(function() {
            res += parseInt($(this).val());

        });

        $('#Total').val(res);
    });
});
您需要尝试以下方法:

$(document).ready(function(){
        $('.InvQty').keyup(function(){
            var Total = 0;
            $('.InvQty').each(function(){
                if(parseInt($(this).val()))
                    Total += parseInt($(this).val());
            });
            $('#Total').val(Total);
        });
    });
出现NaN值是因为parseInt(“”)返回NaN而不是0。

我希望这对你有帮助

看看这个JSFiddle


-demo

请更清楚地说明您想要实现的目标。如果我输入任何非数字,您的代码将生成
NaN
value@BhushanKawadkar-是的,你期望什么?@MichaelZucchetta-但是你应该删除
+
。并在要安全的值周围使用
parseFloat()
您可以使用
parseInt($(this).val())| | 0
来避免NaN@BhushanKawadkar刚刚编辑了我的代码,使用了if(parseInt($(this).val()),如果它是NaN,它将返回null,并且不会经过代码。这个答案现在是完美的,因为它使用了字段值的ID。如果您需要处理浮点值,可以将其作为answer.works完美地处理整数-将parseInt()更改为parseFloat()
$(document).ready(function(){
    $('.InvQty').keyup(function(){

       var val2 = 0;
       $("input[id^='InvQty']").each(function()
       {
           if($(this).val().length != 0)
           {
       val2 = val2 + parseFloat($(this).val())  // need to parse int and float avoiding NaN
           }
    });
        
        $('#Total').val(val2);
    });
});
$(document).ready(function(){
    $(document).on('keyup', '.InvQty', function(){
       var val2 = 0;
        //each input where id starts with 'InvQty' (id='InvQty*')
        $('input[id^="InvQty"').each(function(i, el){
            //get int val
            var curVal = parseInt( $(el).val() );
            //if empty input, then we calculate this as zero value
            var curVal = (isNaN( curVal ) ? 0 : curVal );
            //summ
            val2 = val2 + curVal;
        });
        //result
        $('#Total').val(val2);
    });
});