Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá,
Estou precisando somar input A + B e mostrar o resultado em C, via jQuery.
Achei o seguinte código e esta ok, porém, não funciona com números
da máscara de moeda (0,00).
Segue o código:
<table>
<tr><td><input class="soma"/></td></tr>
<tr><td><input class="soma"/></td></tr>
<tr><td><input class="soma"/></td></tr>
<tr><td><input class="soma"/></td></tr>
</table>
<input id="resultado"/>
$( ".soma" ).blur(function(){
calcular();
});
function calcular() {
var soma = 0;
$( ".soma" ).each(function( indice, item ){
var valor = parseFloat($(item).val());
console.log(valor);
if ( !isNaN( valor ) ) {
soma += valor;
}
});
$( "#resultado" ).val( soma );
}
Segue o exemplo online:
http://jsfiddle.net/davidbuzatto/GkWZf/
Como poderia somar valores com vírgula?
Abraços, God bless!
Consegui, adicionado uma função de conversão numérica, segue o código completo (lembrando que devem adicionar o arquivo jQuery.js):
<table>
<tr><td><input class="soma"/></td></tr>
<tr><td><input class="soma"/></td></tr>
<tr><td><input class="soma"/></td></tr>
<tr><td><input class="soma"/></td></tr>
</table>
<input id="resultado"/>
function number_format (number, decimals, dec_point, thousands_sep) {
number = (number + '').replace(/[^0-9+\-Ee.]/g, '');
var n = !isFinite(+number) ? 0 : +number,
prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
s = '',
toFixedFix = function (n, prec) {
var k = Math.pow(10, prec);
return '' + Math.round(n * k) / k;
};
s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
if (s[0].length > 3) {
s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
}
if ((s[1] || '').length < prec) {
s[1] = s[1] || '';
s[1] += new Array(prec - s[1].length + 1).join('0');
}
return s.join(dec);
}
function toFloat (numero) {
var numero = numero.replace(".","");
numero = numero.replace(",",".");
return parseFloat(numero);
}
$( ".soma" ).blur(function(){
calcular();
});
function calcular() {
var soma = 0;
$( ".soma" ).each(function( indice, item ){
var valor = parseFloat($(item).val());
console.log(valor);
if ( !isNaN( valor ) ) {
soma += valor;
}
});
$( "#resultado" ).val( soma );
}
Deve ter uma maneira mais simples de se fazer, minha especialidade não é o jQuery..
Se alguém tiver, e quiser postar tá valendo, pois, tem bastante procura na web.
God bless! ;)
substitua a vírgula por ponto ..
e mais, se a formatação estiver usando ponto para representação milenar, deve remover.
exemplo
1.560,00 (um mil, quinhentos e sessenta reais)
deve ficar assim:
1560.00