JavaScript: Uncaught Typerror на parseFloat в тексте ввода типа - PullRequest
0 голосов
/ 07 мая 2018

Привет, я получил ошибку Uncaught Typerror on parseFloat in input type text и не могу найти решение

Я пытаюсь сделать эту функцию выше, когда делаю parseFloat в поле txtJurosBaixa2, я получаю ошибку, если я помещаю код в консоль браузера, это работает нормально, но в функции он вылетел.

по коду var jrBaixa = isNaN(parseFloat($("#txtJurosBaixa2").val().replace(/\./g, '').replace(',', '.'))) ? 0 : parseFloat($("#txtJurosBaixa2").val().replace(/\./g, '').replace(',', '.'));

эта часть идет хорошо

isNaN(parseFloat($("#txtJurosBaixa2").val().replace(/\./g, '').replace(',', '.'))) ? 0

но этот не

: parseFloat($("#txtJurosBaixa2").val().replace(/\./g, '').replace(',', '.'));

Значение из txtJurosBaixa2 равно «0,00»

Мой код

function CalculaValores () {
    var formato = { minimumFractionDigits: 2, style: 'currency', currency: 'BRL'    
    var vlrFatura = isNaN(parseFloat($("#txtValorFatura").val().replace(/\./g, '').replace(',', '.'))) ? 0 : parseFloat($("#txtValorFatura").val().replace(/\./g, '').replace(',', '.'));
    var vlrDesc = isNaN(parseFloat($("#txtDesconto").val().replace(/\./g, '').replace(',', '.'))) ? 0 : parseFloat($("#txtDesconto").val().replace(/\./g, '').replace(',', '.'));
    var vlrJuros = isNaN(parseFloat($("#txtJuros").val().replace(/\./g, '').replace(',', '.'))) ? 0 : parseFloat($("#txtJuros").val().replace(/\./g, '').replace(',', '.'));
    var tarifa = isNaN(parseFloat($("#txtTarifaBanc").val().replace(/\./g, '').replace(',', '.'))) ? 0 : parseFloat($("#txtTarifaBanc").val().replace(/\./g, '').replace(',', '.'));
    var arrend = isNaN(parseFloat($("#txtArredondamento").val().replace(/\./g, '').replace(',', '.'))) ? 0 : parseFloat($("#txtArredondamento").val().replace(/\./g, '').replace(',', '.'));
    var descImp = isNaN(parseFloat($("#txtDescontoImposto").val().replace(/\./g, '').replace(',', '.'))) ? 0 : parseFloat($("#txtDescontoImposto").val().replace(/\./g, '').replace(',', '.'));
    var jrBaixa = isNaN(parseFloat($("#txtJurosBaixa2").val().replace(/\./g, '').replace(',', '.'))) ? 0 : parseFloat($("#txtJurosBaixa2").val().replace(/\./g, '').replace(',', '.'));
    var descBaixa = isNaN(parseFloat($("#txtDescontoBaixa").val().replace(/\./g, '').replace(',', '.'))) ? 0 : parseFloat($("#txtDescontoBaixa").val().replace(/\./g, '').replace(',', '.'));
    var vlrTotal = 0;  
        if (vlrJuros !== 0)
            vlrTotal = vlrFatura * (vlrJuros / 100);
        else
            vlrTotal = vlrFatura;

        if (jrBaixa !== 0)
            vltTotal = vltTotal * (jrBaixa / 100);

        vlrTotal = vlrTotal + tarifa + arrend;
        vlrTotal = vlrTotal - (vlrDesc + descBaixa + descImp);

        $("#txtValorLiquido").val(vlrTotal.toLocaleString('pt-BR', formato).replace("R$", ""));
}

Я получаю ошибку

Uncaught TypeError: Cannot convert object to primitive value
    at parseFloat (<anonymous>)
    at Object.CalculaValores (ManutencaoFatura.js:415)
    at Object.<anonymous> (ManutencaoFatura.js:399)
    at j (DXR.axd?r=1_228-Qa59g:2)
    at Object.fireWith [as resolveWith] (DXR.axd?r=1_228-Qa59g:2)
    at x (DXR.axd?r=1_228-Qa59g:5)
    at XMLHttpRequest.b (DXR.axd?r=1_228-Qa59g:5) CalculaValores    @   ManutencaoFatura.js:415 (anonymous) @   ManutencaoFatura.js:399 j   @   DXR.axd?r=1_228-Qa59g:2 fireWith    @   DXR.axd?r=1_228-Qa59g:2 x   @   DXR.axd?r=1_228-Qa59g:5 b   @   DXR.axd?r=1_228-Qa59g:5 XMLHttpRequest.send (async)      send   @   DXR.axd?r=1_228-Qa59g:5 ajax    @   DXR.axd?r=1_228-Qa59g:5 $.ajax  @   DXR.axd?r=17_42-cb59g:663 RemoverDoc    @   ManutencaoFatura.js:376 onclick @   ManutencaoFatura:1

Все значения 0.00

1 Ответ

0 голосов
/ 07 мая 2018

Спасибо, Андреас, используя ваш комментарий и добавив некоторые значения, я получил решение

var jrBaixa = parseFloat ($ ("# txtJurosBaixa2"). Val (). Replace (/./ g, '') .replace (',', '.'). Replace ('R $', ' ') .trim ()) || 0;

знаю, что работает нормально, спасибо

...