2014-11-06 2 views
0

проверьте мои fiddle здесь Fiddle. У меня есть другой идентификатор и класс, и я хочу, чтобы добавить динамически values.while Ключевание я хочу добавить значения динамически в суммарном полеДинамический Добавить значение функции keyup в jQuery

У меня есть 3 входа с идентификаторами InvQty1, InvQty2 и InvQty3 и вход с идентификатором Total

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

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

     $('#Total').val(val2); 
    }); 
}); 

Любая помощь действительно ценится!

+1

Пожалуйста, более ясно, что вы хотите достичь. – Shaeldon

ответ

0

Вот решение. Вы настраиваете функцию, затем, при каждом нажатии клавиши, он получает каждый элемент с классом InvQty, а затем получает его значение и добавляет его в общую сумму. Затем он устанавливает его в общий ввод.

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

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

Это также работает, если вы добавляете на него дополнительные входы с классом InvQty. http://jsfiddle.net/2z4ddh7o/13/

Редактировать: положить parseFloat как это было предложено myfunkyside

+0

Ваш код будет генерировать 'NaN', если я введу какое-либо нечисловое значение –

+0

@BhushanKawadkar - Да, чего вы ожидали? – myfunkyside

+0

@MichaelZucchetta - Вы должны удалить это '+'. И используйте 'parseFloat()' вокруг значений, которые должны быть безопасными – myfunkyside

0

Попробуйте это: на keyup, перебирать все InvQty ввод и суммировать значение, чтобы положить его итог. Используйте parseFloat(), чтобы избежать NaN

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

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

DEMO

0

Попробуйте приведенный ниже код

$(document).ready(function(){ 

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

     }); 

     $('#Total').val(res); 
    }); 
}); 

Fiddle

-1

вам нужно попробовать это:

$(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.

Я надеюсь, что это поможет!

+0

Вы можете использовать 'parseInt ($ (this) .val()) || 0', чтобы избежать NaN –

+0

@BhushanKawadkar только что отредактировал мой код, использованный if (parseInt ($ (this) .val())), который вернет null, если он NaN и не пройдет по коду .. –

1

Заканчивать этот jFiddle Link

$(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); 
    }); 
}); 
+0

Этот ответ теперь отлично, поскольку он использует идентификатор значений поля. Это может быть принято как ответ. – Riad

0
$(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); 
    }); 
}); 

http://jsfiddle.net/52g6v9kq/ - демонстрационная

+0

пример jsfiddle не работает ... – Riad

+0

отлично работает с INTEGER, если вам нужно обрабатывать значения float - измените parseInt() на parseFloat() – LINKeRxUA

Смежные вопросы