Ir para conteúdo

POWERED BY:

Arquivado

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

allex_carvalho

Somar ou diminuir valores decimais

Recommended Posts

Bom dia pessoal,

 

Estou tentando somar ou diminuir valores decimais com jQuery mais não estou conguindo.

 

Listo com checkbox modalidades, dados que vem de uma tabela mysql. O checkbox está assim:

 

<li>
    <input type="checkbox" name="seleciona_cat[]" data-value="' . $rs_modalidades_cadastradas["valor"] . '" value="' . $rs_modalidades_cadastradas["id"] . '" />
    <label>' . $rs_modalidades_cadastradas["modalidade"] . '</label>
</li>

 

E verifico se está selecionando ou não o checkbox para alterar a operação (soma ou subtração). Feito isso faço a operação, mais vejam como está retornando: 60-50, e não está fazendo as devidas operações (só retorna sobtração).

 

Veja o js:

 

    jQuery("input[name='seleciona_cat[]']").click(function(){
        var $modalidades = jQuery(this);
        var $operacao = ($modalidades.attr('checked') === true) ? "+" : "-";
        var $total_modalidade = jQuery(this).attr('data-value');
        var $total_input = (jQuery("#valor_aluno").val() !== "") ? jQuery("#valor_aluno").val() : '0.00';
        var $total = parseFloat($total_modalidade) + $operacao + parseFloat($total_input);
        jQuery("#valor_aluno").val($total);
    });

 

Obrigado pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desse jeito não vai funcionar mesmo.

 

Tente:

    jQuery("input[name='seleciona_cat[]']").click(function(){
        var $modalidades = jQuery(this);
        var $operacao = ($modalidades.attr('checked') === true) ? "+" : "-";
        var $total_modalidade = jQuery(this).attr('data-value');
        var $total_input = (jQuery("#valor_aluno").val() !== "") ? jQuery("#valor_aluno").val() : '0.00';
        var $total = eval(parseFloat($total_modalidade) + $operacao + parseFloat($total_input));
        jQuery("#valor_aluno").val($total);
    });

Ou, de forma mais inteligente:

jQuery("input[name='seleciona_cat[]']").click(function(){
        var $modalidades = jQuery(this);
        var $fator = ($modalidades.attr('checked') === true) ? 1 : -1;
        var $total_modalidade = jQuery(this).attr('data-value');
        var $total_input = (jQuery("#valor_aluno").val() !== "") ? jQuery("#valor_aluno").val() : '0.00';
        var $total = eval(parseFloat($total_modalidade) + $fator*parseFloat($total_input));
        jQuery("#valor_aluno").val($total);
    });

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa Henrique, tentei das duas formas e não deu certo. Ficou da mesma forma.

Meu problema é que na validação jQuery(this).attr('checked') === 'checked' estava colocando true, e no xhtml retorna checked.

 

Fiz da maneira abaixo e funcionou:

 

    jQuery("input[name='seleciona_cat[]']").click(function(){
        var $total_modalidade = jQuery(this).attr('data-value');
        var $total_input = (jQuery("#valor_aluno").val() !== "") ? jQuery("#valor_aluno").val() : '0.00';
        if(jQuery(this).attr('checked') === 'checked'){
            var $total = parseFloat($total_modalidade) + parseFloat($total_input);
        } else {
            var $total = parseFloat($total_input) - parseFloat($total_modalidade);
        }
        jQuery("#valor_aluno").val($total.toFixed(2));
    });

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.