How to handle variable filled by Javascript NAN

5

I have a <input/> in HTML that when I fill up some calculations to automatically fill the other inputs , but if I do not fill in the data this <input/> that triggers the Javascript function the value of the following <input/> that goes the result gets with NAN how can I handle this and leave <input/> zeroed in case this happens?

Javascript Function

function calcValor(){
    var PRECO = 0;
    var PORCENTAGEM = 0;
    var ENTRADA = 0;
    var QT = 0;
    var VDESCONTO = 0;
    var TOTAL = 0;
    // zerando total
    document.getElementById("total").value = '0';
    // Preço do produto
    PRECO = parseInt(document.getElementById("valorProduto1").value);

    // Porcentagem do desconto
    PORCENTAGEM = parseInt(document.getElementById("desconto").value);

    ENTRADA = parseInt(document.getElementById("entrada").value);

    QT = document.getElementById("qtProduto1").value;

    if ()
    VDESCONTO = parseInt(PRECO*(PORCENTAGEM/100));

    Total = parseInt(PRECO)*QT - (parseInt(ENTRADA + VDESCONTO));

    document.getElementById("vdesconto").value = VDESCONTO.toFixed(2); 
    document.getElementById("sp_vdesconto").innerText = VDESCONTO.toFixed(2);
    document.getElementById("total").value = TOTAL.toFixed(2);
    document.getElementById("sp_total").innerText = TOTAL.toFixed(2);
    document.getElementById("debito").innerText = DEBITO.toFixed(2);
} 

function mascara(o,f){
    v_obj=o
    v_fun=f
    setTimeout("execmascara()",1)
}

function execmascara(){
    v_obj.value=v_fun(v_obj.value)
}

function float(v){
    v=v.replace(",",".")
    return v;
}
    
asked by anonymous 06.11.2014 / 22:42

1 answer

7

To detect the occurrence of a NaN (Not a number) you should use the Number.isNaN passing the value.

var nan = 0 / 0;
var eNaN = Number.isNaN(nan); // eNaN vai ser true, pois zero sobre zero não é um número

In your example, the source of the NaN is the parseInt that returns NaN for anything that can not be recognized as a number:

var numero = parseInt("xpto");
if (Number.isNaN(numero))
    numero = 0; // zerando caso seja NaN
    
06.11.2014 / 22:50