2012-05-15 4 views
1

У меня есть несколько текстовых полей с именем класса .paymentamount .i хотят, чтобы добавить все значения текстовых полей одного и того же класса, но я получаю nan.Code ошибки этоДобавление значений множественного текстового поля значения

function paymentData() 
{ 
    $('.paymentamount').keyup(function(){ 
     var amountSum=0; 
     $('.paymentamount').each(function(){ 
      amountSum+=parseInt(this.value); 
     //console.log(this.value); 
     }); 
     console.log(amountSum); 

     }); 
} 
+0

предложить модификации 'amountSum + = ParseInt (this.value);' ' , как amountSum + = parseInt ($ (this) .val()); ' – optimusprime619

ответ

1

Хия Демоhttp://jsfiddle.net/MaK2k/1/или использованием $.isNumerichttp://jsfiddle.net/AKnvr/

**Code** 


$('.paymentamount').keyup(function(){ 
    var amountSum=0; 
    $('.paymentamount').each(function(){ 
     if (this.value != "") 
      amountSum+=parseInt(this.value); 

    }); 

    $(".paymentamountlable").text(amountSum); 


    }); 

+0

Спасибо, что ваши ответы работают для меня, спасибо за помощь. –

+0

Нет проблем, @ Хира - Рад, что это помогло вам использовать; extra '.isNumeric' и' isNan', если вы хотите убедиться, что они только подытоживают числовые значения! :) Еще одна демонстрация здесь: http://jsfiddle.net/AKnvr/ –

2
1. $.trim($(this).val()) 
    2. make use of $(this).val() 
    3. check before adding var match = /^[0-9]$/.test(value); 

Окончательный код для вас после этой модификации в код

$('.paymentamount').each(function(){ 
      var value = $.trim($(this).val()); 
      var match = /^[0-9]$/.test(value); 
      if(match) 
      amountSum+=parseInt(value); 
     //console.log(this.value); 
     }); 
-1

Вы должны попробовать:

amountSum+=parseInt($(this).val()); 
+0

-1 потому что' parseInt() 'может возвращать' NaN', если значение не является числовым, а также потому, что вы пропустили аргумент radix для 'parseInt()'. Этот аргумент необязателен, но должен быть указан, поскольку в противном случае он может по умолчанию использовать восьмеричный, что может дать некоторые неожиданные результаты. – Spudley

1
function paymentData() 
{ 
    $('.paymentamount').keyup(function(){ 
     var amountSum=0; 
     $('.paymentamount').each(function(){ 
      amountSum+=parseFloat($.trim($(this).val())); 

     }); 
     console.log(amountSum); 

     }); 
} 
0
$('.paymentamount').keyup(function(){ 
    var amountSum=0; 
    $('.paymentamount').each(function(){ 
     if(parseInt(this.value) > 0) 
     { 
     amountSum = parseInt(this.value) + parseInt(amountSum); 
     } 
    }); 

console.log(amountSum); 
}); 



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