Skip to content

Parsing to Check if NAN Javascript

I have an onclick even set up to take the value of an input and alert if the value is a number. If the value of the input is blank, I am trying to alert it to say “No Number,” however, it seems that even if my input it empty the function returns a statement saying the the “empty” value is indeed a number.

I have set variable up to parse the value of the input right away, but is this why my code is always returning “Is a number,” because it’s automatically set to be one when it collects the variable?

Code:

HTML:

<input type="text" id="numberTest" />

<button id="button">Click Me</button>

JS:

var button = document.getElementById("button");

button.onclick = function()
{
var numberTest = parseInt(document.getElementById("numberTest").value);

if(numberTest == NaN || "" || null)
{
    alert("No Number");
}
else
{
    alert("This is a number!");
}
};

Answer

Checking if == NaN will always return false. The proper way to do this is with Number.isNaN():

var button = document.getElementById("button");

button.onclick = function() {
    var numberTest = parseInt(document.getElementById("numberTest").value);
    if (Number.isNaN(numberTest) || numberTest == "" || numberTest === null) {
        alert("No Number");
    }
    else {
        alert("This is a number!");
    }
};

You also had some issues with your logic in the if – each clause is a separate expression, and therefore needs to check against numberTest every time.