3

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!");
}
};
3

3 Answers 3

7

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.

Sign up to request clarification or add additional context in comments.

Comments

3

Try using isNaN() method:

isNaN(numberTest)

instead of

numberTest == NaN

According to NaN documentation, NaN is never equal NaN, so NaN == NaN or NaN === NaN will always return false...

BTW, you should change that:

if(numberTest == NaN || "" || null)

to this:

if(isNaN(numberTest) || numberTest == "" || numberTest == null)

so you always compare your variable to a value.

Comments

2

This is another way to know if value is number or not

function IsANumber(numberToValidate) {
   return $.isNumeric(numberToValidate.replace(",", "").replace(".", ""));
} 
$("[id^=YourIDButton]").click(function(){
    if(IsANumber($(this).val())){
       alert("This is a number!");
    }else{
       alert("No number");
    }
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.