Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Alex Camargo

Soma de input em jQuery

Recommended Posts

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!

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.