检查输入是数字还是字母javascript

IT技术 javascript html forms input
2021-03-18 01:53:51

我在 HTML 和 javascript 中使用表单。我希望仅当用户输入LETTER并单击时才会弹出警报submit

所以我有 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;
}
}
6个回答

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

function checkInp()
{
  var x=document.forms["myForm"]["age"].value;
  if (isNaN(x)) 
  {
    alert("Must input numbers");
    return false;
  }
}
不要这样做,像 '0xFF' 和 '2e32' 这样的字符串会通过这个验证。
2021-04-20 01:53:51
当心空字符串:isNaN('') === false;#jsrage
2021-04-23 01:53:51
您不能使用它来检查数字。如果数字后面是字母,则失败。试试这个“3a”。
2021-04-23 01:53:51
最疯狂的事实NAN也是一个数字:(
2021-04-23 01:53:51
2021-05-02 01:53:51

使用正则表达式只匹配字母。如果您需要做一些更复杂的事情,例如确保它是一定数量的数字,那么了解这些知识也很好。

function checkInp()
{
    var x=document.forms["myForm"]["age"].value;
    var regex=/^[a-zA-Z]+$/;
    if (!x.match(regex))
    {
        alert("Must input string");
        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;
    }
}
这是最干净的解决方案
2021-04-29 01:53:51
在第二个代码片段中是否缺少!before x.match(regex)
2021-05-03 01:53:51
还是你的意思regex.test(x)
2021-05-07 01:53:51

您可以使用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 -是的,这可能有问题,有没有可能只输入整数的方法?谢谢你的回答。
2021-04-24 01:53:51
仅对于整数,请使用正则表达式并查看我的答案。
2021-05-16 01:53:51

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

var data = 'hello there';
if(isNaN(data)){
  alert("it is a valid number");
}else {
  alert("it is not a valid number");
}
isNaN(true) 返回 false
2021-04-19 01:53:51

只需找到除以 1 的余数,即 x%1。如果余数为0,则表示x为整数。否则,您必须显示消息“必须输入数字”。即使在字符串、十进制数等的情况下,这也能工作。

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