检查input是数字还是字母javascript

我在HTML和JavaScript中使用表单。 我想要一个提醒,只有当用户input一个信件,然后点击submit时才会popup。

所以我有HTML代码:

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

和JavaScript代码:

 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; } } 

您可以使用isNaN函数来确定值是否不转换为数字。 示例如下:

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

使用正则expression式仅匹配字母。 如果你需要做一些更复杂的事情,比如确保它是一定数量的数字,那么了解它也是很好的。

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

更好的办法是否认除数字之外的任何内容:

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

你可以使用isNaN函数。 如果数据不是数字,则返回true。 那会是这样的:

 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; } } 

注意:isNan认为10.2是一个有效的数字。

你可以使用isNaN()。 当数据不是数字时它返回true。

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

尝试这个:

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

只要find余数除以1即x%1。 如果余数为0,则表示x是整数。 否则,您必须显示消息“必须input数字”。 即使在string,十进制数等情况下也是如此

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

更好的(无错误)代码将如下所示:

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

这也将处理空string。 另一个原因是, isNaN("12")等于false"12"是一个string,而不是一个数字,所以它应该是true 。 最后,您可能会感兴趣的奖励链接 。

 function isNumber(data){ data = data +"e1"; // Disallow eng. notation "10e2"+"e1" is NaN var clean = parseFloat(data,10) / data ; // 1 if parsed cleanly return (clean && (data/data) === 1.0); // Checks for NaN } function isInteger(data){ data = data +"e1"; // Disallow eng. notation "10e2"+"e1" is NaN var clean = parseInt(data,10) / data ; // 1 if parsed cleanly return (clean && (data%1) === 0); // Checks For integer and NaN } 

我知道这个post是旧的,但这是我做search时popup的第一个。 我试过@Kim Kling RegExp,但是失败了。 另外在find这个论坛之前,我尝试了几乎所有其他的变化。 最后,除了我创build的这个之外,他们都没有工作。 它工作正常,加上它是es6:

  let regex = new RegExp(/[^0-9]/, 'g'); let x = document.forms["myForm"]["age"].value; if (x.match(regex)) { alert("Must be a valid number"); return } 

我认为最简单的方法是用string创build一个Number对象,然后检查Number类自身提供的isInteger函数的帮助。

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