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);
});
});