Jquery account does not work

2

Hello, I am trying to mount this code, but it is not working correctly, if possible to analyze because I did not find the errors ...

<script src="jscripts/jquery.min.js" type="text/javascript"></script>

<script>
function AtualizaMensalidade(tributacao, tipo_emp, fat_mes, qt_func, bcos_contas, LabelID)
    {
        tributacao = $('#tributacao').val();
        tipo_emp = $('#tipo_emp').val();
        fat_mes = $('#fat_mes').val();
        qt_func = $('#qt_func').val();
        bcos_contas = $('#bcos_contas').val();

        var MesCalc = (qt_func * 20) + tipo_emp + fat_mes + tributacao;

        if (isNaN(MesCalc)) {
            document.getElementById(LabelID).innerHTML = "- -";
        }
        else {
            document.getElementById(LabelID).innerHTML = formatDinheiro(MesCalc, "R$");
        }
    }

    function formatDinheiro(n, currency) {
        return currency + " " + n.toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, "$1,");
    }

</script>

<div class="container">
    <div class="col-md-4 alinha">
            <label>Tipo de atividade</label>
            <select id="tributacao" name="tributacao" class="form-control input" onchange="Mensalidade(this.value,'tributacao','tipo_emp','fat_mes','qt_func','bcos_contas','AtualizaMensalidade')" />>
            <option value="0">Escolha</option>
            <option value="49.90">MEI</option>
            <option value="219">Simples Nacional</option>
            <option value="319">Lucro Presumido</option>
            <option value="2500">Lucro Real</option>

        </select>
    </div>
    <div class="col-md-4 alinha">
            <label>Tipo de atividade</label>
            <select id="tipo_emp" name="tipo_emp" class="form-control input"  onchange="Mensalidade(this.value,'tributacao','tipo_emp','fat_mes','qt_func','bcos_contas','AtualizaMensalidade')">
            <option value="0">Escolha</option>
            <option value="30">Serviços</option>
            <option value="150">Industrial</option>
            <option value="80">Comercial</option>
            <option value="110">Serviços e Comercio</option>

            </select>   

    </div>
    <div class="col-md-4 alinha">
        faturamento mes<br>
        <input type="number" id="fat_mes" name="fat_mes" class="form-control input" onchange="Mensalidade(this.value,'tributacao','tipo_emp','fat_mes','qt_func','bcos_contas','AtualizaMensalidade')">
    </div>
</div><br>
<div class="container"> 
    <div class="col-md-4 alinha">
        <label>Numero de Funcionarios</label>
        <input type="number" id="qt_func" name="qt_func" class="form-control input" onchange="Mensalidade(this.value,'tributacao','tipo_emp','fat_mes','qt_func','bcos_contas','AtualizaMensalidade')">
    </div>      
    <div class="col-md-4 alinha">
        </label>Quantidade de contas</label>
        <input type="number" id="bcos_contas" name="bcos_contas" value="0" class="form-control input" onchange="Mensalidade(this.value,'tributacao','tipo_emp','fat_mes','qt_func','bcos_contas','AtualizaMensalidade')">
    </div>

<div class="alinha">Resultado: R$ <span id="AtualizaMensalidade">---</span></div>
</div>
    
asked by anonymous 11.02.2016 / 19:23

1 answer

3

When you have, for example

<select id="tributacao" name="tributac... etc
    <option value="219">Simples Nacional</option>

and you will get the value of the option selected with tributacao = $('#tributacao').val(); this will return a String and not a Number . That is, it returns "219" instead of 219. You have to use parseInt or in this case as you have values with decimal places parseFloat .

Not related to your problem, but a suggestion:

In your function you have: function AtualizaMensalidade(tributacao, tipo_emp, fat_mes, qt_func, bcos_contas, LabelID) { but it seems to me that you do not need these arguments. Is it a way to avoid declaring variables? If so, do not advise. It makes code reading difficult. I would do so:

var label = document.getElementById('AtualizaMensalidade');
['tributacao', 'tipo_emp', 'fat_mes', 'qt_func', 'bcos_contas'].forEach(function(id) {
    var el = document.getElementById(id);
    el.addEventListener('change', Mensalidade)
});

function Mensalidade() {
    var qt_func = parseFloat(document.getElementById('qt_func').value);
    var MesCalc = (qt_func * 20) + ['tributacao', 'tipo_emp', 'fat_mes'].reduce(function(total, id) {
        var val = document.getElementById(id).value;
        return total + parseFloat(val);
    }, 0);
    label.innerHTML = isNaN(MesCalc) ? "- -" : formatDinheiro(MesCalc, "R$");
}

function formatDinheiro(n, currency) {
    return currency + " " + n.toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, "$1,");
}
<div class="container">
    <div class="col-md-4 alinha">
        <label>Tipo de atividade</label>
        <select id="tributacao" name="tributacao" class="form-control input">
            <option value="0">Escolha</option>
            <option value="49.90">MEI</option>
            <option value="219">Simples Nacional</option>
            <option value="319">Lucro Presumido</option>
            <option value="2500">Lucro Real</option>
        </select>
    </div>
    <div class="col-md-4 alinha">
        <label>Tipo de atividade</label>
        <select id="tipo_emp" name="tipo_emp" class="form-control input">
            <option value="0">Escolha</option>
            <option value="30">Serviços</option>
            <option value="150">Industrial</option>
            <option value="80">Comercial</option>
            <option value="110">Serviços e Comercio</option>

        </select>

    </div>
    <div class="col-md-4 alinha">
        faturamento mes
        <br>
        <input type="number" id="fat_mes" name="fat_mes" class="form-control input">
    </div>
</div>
<br>
<div class="container">
    <div class="col-md-4 alinha">
        <label>Numero de Funcionarios</label>
        <input type="number" id="qt_func" name="qt_func" class="form-control input">
    </div>
    <div class="col-md-4 alinha">
        <label>Quantidade de contas</label>
        <input type="number" id="bcos_contas" name="bcos_contas" value="0" class="form-control input">
    </div>

    <div class="alinha">Resultado: <span id="AtualizaMensalidade">---</span></div>
</div>

I do not see in your function where you use bcos_contas = $('#bcos_contas').val(); , so I removed it from my example. '

    
11.02.2016 / 19:28