Ir para conteúdo

POWERED BY:

Arquivado

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

allex_carvalho

Preencher input com valor moeda

Recommended Posts

Boa tarde pessoal.

 

Estou desenvolvendo um sistema de pagamento de faturas. Nele tenho alguns checkbox referente as parcelas. O usuário irá marcar o checkbox referente a(s) parcela(s) que o cliente irá pagar. se eu trabalhar com valores até 999,99 está correto, porém, se trabalhar com 1.000,00 acima já da erro. Vejam minha estrutura:

 

Obs.: Nessa primeira fatura no valor de 2.098,00 retorna 2.10

<tr class="nao_pago">
    <td>4ª Parcela</td>
    <td>09/11/2013</td>
    <td>2.098,00</td>
    <td>Paga em 09/09/2013</td>
    <td><input name="pagar[]" type="checkbox" value="26" data-value="2.098,00">Pagar Fatura</td>
</tr>
<tr class="nao_pago">
    <td>5ª Parcela</td>
    <td>09/01/2014</td>
    <td>900,00</td>
    <td>Paga em 10/09/2013</td>
    <td><input name="pagar[]" type="checkbox" value="28" data-value="900,00">Pagar Fatura</td>
</tr>

<tr>
    <th colspan="4"><label for="total_pagar">Total a Pagar</label></th>
    <th><input type="text" id="total_pagar" readonly name="total_pagar" value="" /></th>
</tr>

 

    jQuery("input[name='pagar[]']").click(function() {
        var $total_parcela = jQuery(this).attr('data-value');
        var $total_pagar = (jQuery("#total_pagar").val() !== "") ? jQuery("#total_pagar").val() : '0.00';
        if (jQuery(this).attr('checked') === true) {
            var $total = parseFloat($total_parcela.replace(",", ".")) + parseFloat($total_pagar.replace(",", "."));
        } else {
            var $total = parseFloat($total_pagar.replace(",", ".")) - parseFloat($total_parcela.replace(",", "."));
        }
        jQuery("#total_pagar").val($total.toFixed(2));
    });

 

Obrigado pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

exemplo:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
<style>
label { display: block; }
</style>
</head>
<body>
 
    <label>1,00 <input type="checkbox" name="ch[]" value="1,00" /></label>
    <label>2,00 <input type="checkbox" name="ch[]" value="2,00" /></label>
    <label>3,00 <input type="checkbox" name="ch[]" value="3,00" /></label>
    <label>4,00 <input type="checkbox" name="ch[]" value="4,00" /></label>
    <label>5,00 <input type="checkbox" name="ch[]" value="5,00" /></label>
    <label>6,00 <input type="checkbox" name="ch[]" value="6,00" /></label>
    <label>7,00 <input type="checkbox" name="ch[]" value="7,00" /></label>
    <label>8,00 <input type="checkbox" name="ch[]" value="8,00" /></label>
    <label>9,00 <input type="checkbox" name="ch[]" value="9,00" /></label>
    <label>10,00 <input type="checkbox" name="ch[]" value="10,00" /></label>
 
    <label>Resultado <input type="text" name="result" id="result" value="R$ 0,00" /></label>
 
<script>
String.prototype.formatMoney = function() {
    var v = this;
 
    if(v.indexOf('.') === -1) {
        v = v.replace(/([\d]+)/, "$1,00");
    }
 
    v = v.replace(/([\d]+)\.([\d]{1})$/, "$1,$20");
    v = v.replace(/([\d]+)\.([\d]{2})$/, "$1,$2");
    v = v.replace(/([\d]+)([\d]{3}),([\d]{2})$/, "$1.$2,$3");
 
    return v;
};
String.prototype.toFloat = function() {
    var v = this;
 
    if (!v) return 0;
    return parseFloat(v.replace(/[\D]+/g, '' ).replace(/([\d]+)(\d{2})$/, "$1.$2"));
};
(function(){
    "use strict";
 
    var $chs = document.querySelectorAll('input[name="ch[]"]'),
        $result = document.getElementById('result'),
        chsArray = Array.prototype.slice.call($chs);
 
    chsArray.forEach(function(element, index, array){
        element.addEventListener("click", function(){
            var v = this.value,
                result = 0;
            v = v.toFloat();
 
            if (this.checked === true) {
                result = $result.value.toFloat() + parseFloat(v);
            } else {
                result = $result.value.toFloat() - parseFloat(v);
            }
 
            $result.value = "R$ " + String(result).formatMoney();
        });
    });
 
 
}());
</script>
</body>
</html>

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.