Check if input is number or letter javascript

JavascriptHtmlFormsInput

Javascript Problem Overview


I'm using forms in HTML and javascript. I would like an alert to pop up only if the user inputs a LETTER and clicks submit.

So I have the HTML code:

<form name="myForm" action="" onsubmit="return checkInp()" method="post">
	First name: <input type="text" name="age">
<input type="submit" value="Submit">   

And the javascript code:

function checkInp()
{
var x=document.forms["myForm"]["age"].value;
if (x consists of any letters) // this is the code I need to change
{
alert("Must input numbers");
return false;
}
}

Javascript Solutions


Solution 1 - Javascript

You can use the isNaN function to determine if a value does not convert to a number. Example as below:

function checkInp()
{
  var x=document.forms["myForm"]["age"].value;
  if (isNaN(x)) 
  {
    alert("Must input numbers");
    return false;
  }
}

Solution 2 - Javascript

Use [Regular Expression][1] to match for only letters. It's also good to have knowledge about, if you ever need to do something more complicated, like make sure it's a certain count of numbers.

function checkInp()
{
    var x=document.forms["myForm"]["age"].value;
    var regex=/^[a-zA-Z]+$/;
    if (!x.match(regex))
    {
        alert("Must input string");
        return false;
    }
}

Even better would be to deny anything but numbers:

function checkInp()
{
    var x=document.forms["myForm"]["age"].value;
    var regex=/^[0-9]+$/;
    if (x.match(regex))
    {
        alert("Must input numbers");
        return false;
    }
}

[1]: http://en.wikipedia.org/wiki/Regular_expression "Regular Expression"

Solution 3 - Javascript

You could use the isNaN Function. It returns true if the data is not a number. That would be something like that:

function checkInp()
{
	var x=document.forms["myForm"]["age"].value;
	if (isNaN(x)) // this is the code I need to change
	{
		alert("Must input numbers");
		return false;
	}
}

Note: isNan considers 10.2 as a valid number.

Solution 4 - Javascript

you can use isNaN(). it returns true when data is not number.

var data = 'hello there';
if(isNaN(data)){
  alert("it is a valid number");
}else {
  alert("it is not a valid number");
}

Solution 5 - Javascript

Just find the remainder by dividing by 1, that is x%1. If the remainder is 0, it means that x is a whole number. Otherwise, you have to display the message "Must input numbers". This will work even in the case of strings, decimal numbers etc.

function checkInp()
{
    var x = document.forms["myForm"]["age"].value;
    if ((x%1) != 0) 
    {
        alert("Must input numbers");
        return false;
    }
}

Solution 6 - Javascript

I know this post is old but it was the first one that popped up when I did a search. I tried @Kim Kling RegExp but it failed miserably. Also prior to finding this forum I had tried almost all the other variations listed here. In the end, none of them worked except this one I created; it works fine, plus it is es6:

    const regex = new RegExp(/[^0-9]/, 'g');
    const val = document.forms["myForm"]["age"].value;

    if (val.match(regex)) {
       alert("Must be a valid number");
    }
   

Solution 7 - Javascript

Try this:

if(parseInt("0"+x, 10) > 0){/* x is integer */}

Solution 8 - Javascript

A better(error-free) code would be like:

function isReallyNumber(data) {
    return typeof data === 'number' && !isNaN(data);
}

This will handle empty strings as well. Another reason, isNaN("12") equals to false but "12" is a string and not a number, so it should result to true. Lastly, a bonus link which might interest you.

Solution 9 - Javascript

I think the easiest would be to create a Number object with the string and check if with the help of isInteger function provided by Number class itself.

Number.isInteger(Number('1')) //true
Number.isInteger(Number('1 mango')) //false
Number.isInteger(Number(1)) //true
Number.isInteger(Number(1.9)) //false

Solution 10 - Javascript

The best and modern way is typeof (variable) if you care about real number not number from string. For example:

var a = 1;
var b = '1';

typeof a: // Output: "number"
typeof b: // Output: "string

Solution 11 - Javascript

Thanks, I used @str8up7od answer to create a function today which also checks if the input is empty:

    function is_number(input) {
        if(input === '')
            return false;
        let regex = new RegExp(/[^0-9]/, 'g');
        return (input.match(regex) === null);
    }

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionGreg PeckoryView Question on Stackoverflow
Solution 1 - JavascriptBat_ProgrammerView Answer on Stackoverflow
Solution 2 - JavascriptKim KlingView Answer on Stackoverflow
Solution 3 - JavascriptmaelView Answer on Stackoverflow
Solution 4 - JavascriptDeepak GangoreView Answer on Stackoverflow
Solution 5 - JavascriptCryptersView Answer on Stackoverflow
Solution 6 - Javascriptstr8up7odView Answer on Stackoverflow
Solution 7 - JavascriptMasoud NazariView Answer on Stackoverflow
Solution 8 - JavascriptRam PatraView Answer on Stackoverflow
Solution 9 - JavascriptVikas BansalView Answer on Stackoverflow
Solution 10 - Javascriptuser8621657View Answer on Stackoverflow
Solution 11 - JavascriptPurple TentacleView Answer on Stackoverflow