检查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